xpath с несколькими условиями, которые будут содержать теги 'a' и 'div' - PullRequest
1 голос
/ 20 апреля 2020

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

<div class="request-body comments-left-discription clickme" style="cursor:pointer; " id="12340" title="" data-placement="bottom" data-toggle="tooltip" mode="">
        <div class="desc-title">
            <a target="_blank" class="site-color" href="http://test://0316">Nutan</a> requested <a href="http://test://0316">Approval</a></div>
            <div class="msg-time"><small><a rel="tooltip" data-placement="right" title="" class="color6" href="#" data-original-title="Created on, ">ago</a>  (020 )</small></div>
            Auto            <br>
            <div class="btn" id="button">
                <a id="accept" class="b" href="javascript:void(0);">APPROVE</a><a id="reject" class="btn" href="javascript:void(0);">REJECT</a>                </div>    
            </div>

В приведенном выше HTML Я хочу использовать приведенные ниже условия в одном операторе xpath, и я написал так, как показано ниже, и он показывает, что не может найти элемент.

driver.findElements(By.xpath("//div[starts-with(@id,'1234')"
                + " and //a[contains(text(),'off')]]]"));

1 Ответ

1 голос
/ 20 апреля 2020
Тег

a находится под тегом div, поэтому для этого можно использовать приведенный ниже относительный xpath:

driver.findElement(By.xpath("//div[contains(@id,'5e9b7')]//a[contains(text(),'Compensatory-off Approval')]"))

Обновленный ответ после обсуждения с OP:

List<WebElement> elementList = driver.findElements(By.xpath("//div[contains(@id,'5e9b7')]//a[contains(text(),'Compensatory-off Approval')]"));
if(elementList.size()>0){
    // Element is present
    // Do the required operations here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...