javascript - 通过 Selenium Webdriver 中的 Java Script Executor 传递复杂的 xpath

标签 javascript selenium xpath selenium-webdriver

我使用了以下 xpath 来查找网格上的元素。

By.xpath("//div[contains(text(),'" +EnteredCompetitionName+ "')]/preceding-   sibling::div[contains(concat(' ', @class, ' '), ' slick-cell l0 r0 ')]/a/img"

问题是网格变得太大,并且仅使用 xpath 查找元素无法找到我试图查找的元素。因此我尝试在 selenium webdriver 中使用 javascript 执行器。

WebElement selectedCompGlass = (WebElement) js.executeScript("return document.evaluate('//div[contains(text(),' +EnteredCompetitionName+ ')]/preceding-sibling::div[contains(concat(\' \', @class, \' \'), \' slick-cell l0 r0 \')]/a/img' ,document, null, XPathResult.ANY_TYPE, null ).singleNodeValue;");
js.executeScript("arguments[0].click();", selectedCompGlass);

但是,我仍然收到以下错误:

参数列表后缺少 ) 命令持续时间或超时:8 毫秒构建信息:版本:'2.44.0',修订版:'76d78cf',时间:'2014-10-23 20:02:37'

最佳答案

如果滚动适用于您的情况,那么您可以使用 javascript 滚动IntoView,直到找到该元素,然后执行您的操作。

它将滚动到该元素,

WebElement element = driver.findElement(By.id("id_of_element"));
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);

关于javascript - 通过 Selenium Webdriver 中的 Java Script Executor 传递复杂的 xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31468422/

相关文章:

javascript - 如何将 Prop 传递给组件的 child

javascript - 建立响应式缩略图画廊

python - 在 python3 中使用 selenium 无法在页面中找到元素

java - KeyDown() 、sendKeys() 在 Selenium 中不起作用

xml - 使用命名空间属性和 SelectSingleNode 属性的 XPATH

javascript - Angular 遍历选择选项并设置选定值

Javascript 原型(prototype) setter 和 getter

python - Django + bdd + Selenium

ruby - 显式等待 Selenium Webdriver

xml - 如何在 xpath 表达式上执行 "OR"而无需使用 "|"连接两个 xpath 或使用 xpath 函数?