Selenium webdriver错误无法在(竹子)上找到元素

Posted

技术标签:

【中文标题】Selenium webdriver错误无法在(竹子)上找到元素【英文标题】:Selenium webdriver error Unable to find element on (bamboo) 【发布时间】:2018-11-01 13:20:00 【问题描述】:

我是 selenium 的新手,正在使用 Chrome 网络驱动程序。

我要点击的元素是

<a href="/myclas-s-room/studentsclass" class="current">Students</a>

我写了一点代码来点击链接

driver.findElement(By.(linkText("Students")).click();

我尝试过的其他方法

driver.findElement(By.xpath(a[@href="/myclas-s-room/studentsclass"])).click();

上面(两个)代码在 Windows 上本地运行良好,但是当我将它推到竹子执行它的 bitbucket 上时。它返回未找到的错误元素。

错误的可能原因是什么? 谢谢。我们将不胜感激。

【问题讨论】:

在你的 CI 中运行它的浏览器是什么?它可能无法正确呈现元素,或者可能无法正确解释元素。如果问题出在元素丢失或硒中,您可以尝试使用 css 选择器 我已经尝试过使用 css selsctor 但同样的问题。 【参考方案1】:

这可能是服务器加载时间较长的问题,添加一些等待

WebDriverWait wait = new WebDriverWait(webDriver, 10);
wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Students"))).click();;

【讨论】:

好的,我正在测试。我会在测试后立即回复。谢谢 你能告诉我implicitlyWait和上面你写的方法有什么区别吗。 @RamzanMahmood implicitlyWait 将等待元素存在于 DOM 中。显式等待(WebDriverWait)将等待 ExpectedCondition(在这种情况下为elementToBeClickable)。【参考方案2】:

你可以列个清单:

List<WebElement> elements= driver.findElement(By.id("current").findElements(By.tagName("a"));
for (int j = 0; j <= elements.size(); j++) 
   if(elements.get(i).getText().equals("Students"))
      elements.get(i).click();
      break;
   

【讨论】:

以上是关于Selenium webdriver错误无法在(竹子)上找到元素的主要内容,如果未能解决你的问题,请参考以下文章

即使没有错误,也无法使用Selenium Webdriver注册零售网站

无法在 Selenium Webdriver 中设置 cookie

Python:Selenium Firefox Webdriver 失败并出现错误:“无法加载配置文件...WARN addons.xpi...”

Python3.5 和 FF48 的 Selenium WebDriver 出现“无法加载配置文件”错误

无法通过 perl 绑定连接 selenium webDriver

Scrapy with selenium,webdriver 无法实例化