Не удалось нажать на ссылку, которая открывает меню - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь нажать на ссылку после текста «действие».HTML-код:

<div _ngcontent-c10="" class="col-md-3" style="padding-left: 20px;">
  <div _ngcontent-c10="" class="card" style="width:100% !important">
     <div _ngcontent-c10="" class="headerText">FLOATS &amp; MOVE</div>
     <hr _ngcontent-c10="">
     <div _ngcontent-c10="" class="text1">action</div>
     <div _ngcontent-c10="" class="text2">
        <a _ngcontent-c10="" class="waves-light" data-toggle="modal" mdbwaveseffect="" style="margin-right: -25%;" type="button">
          <img _ngcontent-c10="" src="assets/co-assets/icon-down-arrow-med.png">
        </a>
     </div>
     <div _ngcontent-c10=""class="text1">from</div>
     <div _ngcontent-c10="" class="text2"> 
        <a _ngcontent-c10="" class="waves-light" data-toggle="modal" mdbwaveseffect="" 
style="margin-right: -25%;" type="button">
           <img _ngcontent-c10="" src="assets/co-assets/icon-down-arrow-med.png"> 
        </a>
     </div>
     <div _ngcontent-c10="" class="text1">to</div>
     <div _ngcontent-c10="" class="text2">
        <a _ngcontent-c10="" class="waves-light" data-toggle="modal" mdbwaveseffect="" style="margin-right: -25%;" type="button">
           <img _ngcontent-c10="" src="assets/co-assets/icon-down-arrow-med.png">
        </a>
     </div>

Я использовал XPath:

//div[./text()='action']/following-sibling::div[1]/a

Я явно ждал 20 секунд с условием ElementToBeClickable следующим образом:

wait.until(ExpectedConditions.elementToBeClickable(actionDropDown));

Интересно, что я не получаю TimeOutException.

1 Ответ

1 голос
/ 04 июня 2019

Похоже, Webdriver не может нажать на элемент. Попробуйте следующие варианты, чтобы щелкнуть.

Использовать класс действий

WebElement ele=driver.findElement(By.xpath("//div[@class='text1'][contains(.,'action')]/following-sibling::div[1]/a"));
Actions action=new Actions(driver);
action.moveToElement(ele).click().build().perform();

Использовать Javascripts executor

WebElement ele=driver.findElement(By.xpath("//div[@class='text1'][contains(.,'action')]/following-sibling::div[1]/a"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", ele);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...