Попытка найти текстовый элемент в промежутке - PullRequest
0 голосов
/ 11 июля 2019

Я пишу тест селенового веб-драйвера на Java.Мне нужен тест, чтобы нажать на кнопку «Да» в Chrome, у которой нет идентификатора или имени.Я не могу найти элемент, чтобы нажать на кнопку, которая имеет только «Да» в качестве уникального идентификатора.Также есть кнопка «Нет».

Я попытался найти WebElement, используя xpath, classname, и я попытался найти функцию findElements.Ничего не получается.

Это HTML:

<span class="ui-btn-inner">
<span class="ui-btn-text popup-anchor-text">Yes</span>
</span>

Я пытался:

WebElement yesBtn = browser.findElement(By.xpath("//div[@class='ui-btn-text popup-anchor-text']/span"));

WebElement yesBtn = browser.findElement(By.xpath("//span[.='Yes']"));

WebElement yesBtn = browser.findElement(By.xpath("//div[contains(text(), 'Yes')]"));

WebElement yesBtn = browser.findElement(By.xpath("//button[@class='ui-btn-text popup-anchor-text' and span='Yes']"));

WebElement yesBtn = browser.findElement(By.xpath("//div[@class='ui-btn-text popup-anchor-text' and span='Yes']"));

yesBtn.click();

List<WebElement> yesBtn = browser.findElements(By.className("ui-btn ui-shadow ui-btn-corner-all ui-btn-up-a"));

yesBtn.get(0).click();

Сообщение об ошибке: NoSuchElementException;нет такого элемента.Невозможно найти элемент.

Ответы [ 2 ]

1 голос
/ 11 июля 2019

Правильный локатор XPath будет:

//span[text()='Yes']

На всякий случай вы можете перейти на normalize-space() функцию :

//span[normalize-space()='Yes']

Если это не поможет:

  1. Убедитесь, что диапазон не принадлежит iframe , в противном случае вам придется переключиться на iframe , прежде чем пытаться найти элемент.

    driver.switchTo().frame("your-frame");
    
  2. Обязательно используйте класс WebDriverWait на тот случай, если элемент недоступен сразу, поэтому WebDriver выполнит несколько попыток поиска с интервалом опроса

    new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath("//span[text()='Yes']")));
    
0 голосов
/ 15 июля 2019

Попробуйте //span[@class='ui-btn-inner']/descendant::span[contains(text(), 'Yes')].Это должно помочь.

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