2017-01-23 5 views
1

Я работаю над проектом Java, где мне нужно сделать несколько UAT с Selenium. У меня нет знаний о Webdevelopment, поэтому я не уверен, что моя проблема может быть решена. Проблема: Существует веб-страница, в которой вы можете отметить некоторые радио кнопки или флажки. У всех из них есть поле рядом с ними с текстом. Поэтому я хочу найти эти кнопки и флажки с Java и Selenium, чтобы пометить их. С Firefox я открыл консоль, чтобы получить код некоторых кнопок:Как получить кнопку WebElement по метке

<tr> 
<td class="af_tableSelectMany_cell-icon-format OraTableBorder1111" style=""> 
<input id="equipmentChecker6" type="checkbox" onchange="setDirty();deselectOptions('6');selectOption('6');" value="true" name="equipmentChecker6"> 
</td> 
<td class="af_column_cell-text OraTableBorder1111" style="text-align: left; ">Some Text1</td> 
</tr> 


<tr> 
<td class="af_column_cell-text OraTableBorder1111"> </td> 
<td class="af_column_cell-text OraTableBorder1111" style="text-align: left;"> 
<span class="af_selectOneRadio"> 
<span id="optionRadio5" class="af_selectOneRadio_content"> 
<input id="optionRadio5:_0" type="radio" onchange="setDirty();selectEquipment('5');" value="0" name="optionRadio5"> 
<label for="optionRadio5:_0">Some Text2</label> 
</span> 
</span> 
</td> 
</tr> 

это код с страницы. Теперь я хочу получить Webelement с id = equipmentChecker6, но у меня есть текст «Some Text1».

Во втором примере я хочу получить id = optionRadio5: _0, просто получив текст «Some Text2» объекта метки. Есть ли способ получить элементы кнопки как Webelements в Java с Selenium?

ТНХ помощи

ответ

1

Вы можете использовать что-то наподобие

// For the first case 
driver.findElement(By.xpath("//td[text()='Some Text1']/preceding-sibling::td/input[@type='checkbox']")).click(); 

// For the second case 
driver.findElement(By.xpath("//label[text()='Some Text2']/preceding-sibling::input[@type='radio']")).click(); 
+0

спасибо, что сработало! Есть ли документ, где я могу найти объяснение этого метода, чтобы я мог решить будущие подобные проблемы самостоятельно? – mrprinze

+0

На самом деле это обычный синтаксис XPath. 'previous-sibling', а также' next-sibling' позволяют обрабатывать предыдущий/следующий элемент на одном уровне в 'DOM'. Я предлагаю вам поместить этот https://www.simple-talk.com/wp-content/uploads/imported/1269-Locators_table_1_0_2.pdf в вашу закладку браузера, если вы собираетесь много работать с 'selenium' и локаторы: есть много о 'XPath' и' CSS' селекторах – Andersson

+0

thank yout!что по этому поводу, например: ' \t <тд класс = "af_tableSelectOne_cell-значок формата OraTableBorder1111"> \t \t <ввод ID = "j_id_1r_1_72_3_1: 0" Тип = "радио" проверенного = "" значение = "0" OnClick = "SetDirty();" название = "" название = "j_id_1r_1_72_3_1: выбрано"> \t \t <метка класса = "p_OraHiddenLabel" для = "j_id_1r_1_72_3_1: 0"> \t \t <тд класс = "левый контент-текст af_column_cell-текст OraTableBorder1111 "> \t \t <пролет класс =" "> Some Text \t \t <тд класс =" право-контент-текст af_column_cell-текст OraTableBorder1111 "> \t \t <пролет класс =" decimalNumberAlign "> Некоторые Количество \t « – mrprinze

0

https://loadfocus.com/blog/2013/09/05/how-to-locate-web-elements-with-selenium-webdriver/

driver.findElement (By.id ("Идентификатор элемента"))

так что в этом случае:

driver.findElement (By.id («equipmentChecker6»))

+0

это сработает, но я не знаю об идентификаторе. Сценарий: есть кто-то, определяющий параметры, а параметры - это метки. Поэтому у меня есть ярлыки, чтобы найти кнопки, на которые они ссылаются. – mrprinze

Смежные вопросы