WebDriver - как передать локатор объекта в качестве параметра в тесте, управляемом данными?

Мне интересно, возможно ли передать локатор в качестве параметра в тесте, управляемом данными? Например:

    //this is non-parameterized object RADIO_BUTTON locator

    WebElement radiobElm = driver.findElement(RADIO_BUTTON);
    radiobElm.click();

    vs. 

    //I'd like to pass locator "RADIO_BUTTON" as string (strRadioButton) from Excel sheet, so for each test iteration my script will click on different radio-buttons. Is it possible? 

    WebElement radiobElm = driver.findElement(strRadioButton);
    radioElm.click();

2 ответа

Решение

Один из многих способов сделать это - использовать один и тот же метод для поиска элементов и чтения локатора из файла Excel.

 WebElement radiobElm = driver.findElement(By.xpath("Your xpath string from exel"));

Конечно, вы должны сделать все остальные работы, чтобы прочитать правильную ячейку из Excel.

Да, ты можешь. Вам просто нужно получить данные из Excel (например, с помощью метода getContents() jexcelapi). Затем вы можете манипулировать ими соответственно по мере их поступления.

1- Если это xpath, используйте это:

WebElement radiobElm = driver.findElement(By.xpath("Cell contents containing xpath of the webelement"));
radioElm.click();

2- Если это идентификатор, используйте это:

WebElement radiobElm = driver.findElement(By.id("Cell contents containing id of the webelement"));
radioElm.click();

3- Если это cssSelector, используйте это:

WebElement radiobElm = driver.findElement(By.cssSelector("Cell contents containing cssSelector of the webelement"));
radioElm.click();

Аналогичная вещь, также может быть применена для "className, name, linkText, partalLinkText и tagName".

Другие вопросы по тегам