Как проверить, что один элемент присутствует внутри другого элемента в Selenium Webdriver с Java? - PullRequest
0 голосов
/ 26 октября 2018
<td class="width-90px">
    <h5 class="width-90px text-ellipsis align-center margin-top-bottom-5">
            <i class="fa fa-check font-14 " aria-hidden="true"></i>
    </h5>
</td>

Выше html class="width-90px" - это один элемент, под этим элементом присутствует другой элемент class="fa fa-check font-14 ", как мы можем дать условие, чтобы проверить, что второй элемент присутствует внутри первого элемента?

Ответы [ 5 ]

0 голосов
/ 27 октября 2018

Этого можно добиться, используя оси Xpath:

WebElement element = driver.findElement.(By.xpath("//td[@class='width- 
                     90px']/following-sibling::h5/i[@class='fa fa-check font-14']));
if(element != null)
   //element is inside first 
else
   //element is not the child of first
0 голосов
/ 26 октября 2018

Если вашей единственной целью является проверка того, что элемент с атрибутом в качестве class="fa fa-check font-14 " присутствует в элементе с атрибутом в качестве class="width-90px", вы можете создать локатор Стратегия основана на простом отношении Ancestor и Потомок и может использовать любое из следующих решений:

  • XPath:

    //td[@class="width-90px"]//i[@class='fa fa-check font-14']
      ^ -> Ancestor            ^ -> Descendant
    
  • CssSelector:

    td.width-90px i.fa.fa-check.font-14
    ^ ->Ancestor  ^ ->Descendant
    

Примечание. Используйте блок try-catch{} для проверки наличия присутствия элемента, основанного на отношениях Предок-Потомок .

0 голосов
/ 26 октября 2018

Сначала нужно найти элемент с классом "width-90px", а внутри него вы можете проверить элемент с классом "fa fa-check font-14", как показано ниже:

WebElement first = driver.findElement(By.className("width-90px"));

WebElement second  = first.findElement(By.className("fa fa-check font-14 "));

2-й оператор в коде вызовет исключение, если его нет внутри первого элемента.

0 голосов
/ 26 октября 2018
WebElement first = driver.findElement(By.xpath(".//*[@class='width-90px']"));

first.findElement(By.xpath(".//*[@class='fa fa-check font-14 ']")).isDisplayed();

работает нормально, если второй элемент отсутствует внутри первого элемента, его ошибка выбрасывания.

0 голосов
/ 26 октября 2018

Вы можете использовать XPath с соответствующим предикатом:

//td[@class="width-90px" and .//i[@class="fa fa-check font-14 "]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...