Невозможно найти любую из переключателей, если оба значения одинаковы - PullRequest
0 голосов
/ 09 января 2019

Я новичок в изучении Selenium, помогите, пожалуйста, найти радио-кнопку.

Когда я пытаюсь нажать переключатель (статический или динамический), я не могу нажать ни те, ни другие enter image description here Я попробовал приведенные ниже команды, используя Xpath. Но никто из них не работал

1. //input[@type='radio' and @value='on'][1]

2. //p[text()='Static']

Команды попытались:

driver.findElement(By.xpath("//input[@type='radio' and @value='on'][1]")).click();
driver.findElement(By.xpath("(//*[text()='Static'])[1]")).click();
driver.findElement(By.xpath("//p[text()='Static']")).click();

HTML-скрипт для переключателя, полученный из инструментов разработчика:

<div class="Radio__radio___1xD3w" style="display: inline-block; margin-right: 36px; margin-top: 10px;"> ==$0
<input type="radio" class="Radio__radio-btn___E4u40" name="" value="on"><p class="Radio__radio-label___26Ok6">Static</p>
</div>
<div class="Radio__radio___1xD3w" style="display: inline-block; margin-top: 10px;">==$0
<input type="radio" class="Radio__radio-btn___E4u40" name="" value="on">
<p class="Radio__radio-label___26Ok6">Dynamic</p></div>

Кодовые испытания:

driver.findElement(By.xpath("(//*[text()='Static'])[1]")).click();
driver.findElement(By.xpath("//p[text()='Static']")).click();
driver.findElement(By.xpath("//input[@type='radio' and @value='on'][1]")).click();

1 Ответ

0 голосов
/ 09 января 2019

Поскольку радиокнопка , связанная с текстом Статический , является динамическим элементом для вызова click(), вам необходимо вызвать WebDriverWait , и вы можете использовать следующее решение:

  • xpath:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//p[starts-with(@class,'Radio__radio-label___') and contains(., 'Static')]//preceding::input[1]"))).click();
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...