выбор переключателя с почти такими же атрибутами в селене - PullRequest
0 голосов
/ 03 марта 2020

У нас есть 2 переключателя с почти одинаковыми атрибутами, и ни одна из комбинаций атрибутов xpath не работает. Пожалуйста помоги. Ниже добавлен код HTML.

переключатель 1:

<label class="label_radio r_off"><input kdfid="flowSelection" kdfapp="order" kdfpage="createOrder" type="radio" id="flowSelection" class="orderWithDealId" name="flowSelection" value="false" onclick="javascript:icw.singleEntry.flowSelection('deal');" checked="true" tabindex="1"></label>
<span class="radioTxt">With a Deal ID</span>

переключатель 2:

<label class="label_radio r_on"><input kdfid="flowSelectionnew" kdfapp="order" kdfpage="createOrder" type="radio" id="flowSelectionnew" name="flowSelection" class="orderWithNoDealId" value="true" onclick="javascript:icw.singleEntry.flowSelection('noDeal');" tabindex="1"></label>
<span class="radioTxt">Without a Deal ID</span>

Пожалуйста, помогите.

Ответы [ 3 ]

0 голосов
/ 03 марта 2020

Нет необходимости использовать xpath, className должно работать.

  1. Попробуйте By.className ("orderWithDealId") для первой радиокнопки и By.className ("orderWithNoDealId") для второй элемент.

  2. Если вы должны использовать xpath, попробуйте "// input [@ class = 'orderWithDealId']" для первой радиокнопки и "// input [@ class = 'orderWithNoDealId']" для второй радиокнопки .

  3. Вы также можете использовать @value = true / false для первой и второй переключателей соответственно.

0 голосов
/ 03 марта 2020

К click() на элементах, которые необходимо использовать elementToBeClickable(), и вы можете использовать любую из следующих Стратегий локатора :

  • С радиокнопка с идентификатором сделки с использованием xpath :

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//span[@class='radioTxt' and text()='With a Deal ID']//preceding::label[1]/input"))).click();
    
  • без радиокнопки с идентификатором сделки с использованием xpath :

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//span[@class='radioTxt' and text()='Without a Deal ID']//preceding::label[1]/input"))).click();
    
0 голосов
/ 03 марта 2020

Проверьте это.

//span[.='Without a Deal ID']/preceding-sibling::label/input

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...