Selenium Webdriver (Java) 无法点击 AJAX 按钮
Posted
技术标签:
【中文标题】Selenium Webdriver (Java) 无法点击 AJAX 按钮【英文标题】:Selenium Webdriver (Java) cannot click the AJAX button 【发布时间】:2015-04-25 12:34:02 【问题描述】:我有一个顶部有一些按钮的网站。 单击后,将出现一个新的 AJAX 部分。
我对 html 不太熟悉,但是“添加”按钮(这个按钮是我的目标)不知何故位于 <span>
。
<!DOCTYPE html>
<html slick-uniqueid="3">
<head></head>
<body class="newui">
<div class="pagewrapper ">
<div class="section shadow" data-form-element="SectionHeading">
<div class="section-header">
<div class="section-title"></div>
<div class="section-nav">
<ul>
<li class="add u-yellow">
<span></span>
<span style="background-color: transparent;">
Add
</span>
我在 Selenium 中使用此代码
driver.findElement(By.xpath("//li[5]/span[2]")).click();
但 Selenium 找不到该按钮,也无法单击它。
返回错误
线程“主”org.openqa.selenium.WebDriverException 中的异常:未知错误:元素在点 (1776, 32) 处不可点击。其他元素会收到点击: (会话信息:chrome=40.0.2214.115) (驱动程序信息:chromedriver=2.14.313457 (3d645c400edf2e2c500566c9aa096063e707c9cf),平台=Windows NT 6.3 x86_64)(警告:服务器未提供任何堆栈跟踪信息) 命令持续时间或超时:51 毫秒
谁能帮帮我?
谢谢。
【问题讨论】:
您的跨度部分没有按钮?你想简单地点击文本“添加”吗? 有一个按钮,上面有“添加”文本。单击“添加”按钮时,它将加载一个小的 AJAX 部分。 在这种情况下,我使用 javascriptExecutor click 方法取得了一些成功。 【参考方案1】:可能li
元素实际上是可点击的:
driver.findElement(By.cssSelector("li.add.u-yellow")).click();
【讨论】:
【参考方案2】:我找到了一个很好的解决方案。 基本上,我使用 FirePath (Firefox Add-on) 来查找 CSS 或 XPath 位置并将其用于我的 webdriver 代码。 Firepath 告诉我该按钮有 CSS 位置
.add.u-yellow>span
我把它放在我的代码中
driver.findElement(By.cssSelector(".add.u-yellow>span")).click();
...它的工作原理:)
我不熟悉 Javascript,所以我不知道为什么 .add.u-yellow>span
有效。但是 FirePath 似乎是帮助 Webdriver 开发人员的好工具 :)
【讨论】:
【参考方案3】:这可能是很多事情。
-
元素不在网络浏览器的可见视图中
页面尚未加载完毕
元素在另一个元素的后面
您可以尝试按照其他人的建议单击父元素:
driver.findElement(By.cssSelector("li.add.u-yellow")).click();
或者,您可以绑定 span 元素的类:
driver.findElement(By.cssSelector("span[style='background-color: transparent;']")).click();
【讨论】:
以上是关于Selenium Webdriver (Java) 无法点击 AJAX 按钮的主要内容,如果未能解决你的问题,请参考以下文章
[Selenium+Java] Verify Tooltip Using Selenium WebDriver
零基础Selenium:Webdriver图文入门教程java篇(附相关包下载)
如何使用 Java 在 selenium webdriver 中打开新选项卡,或者如何使用 selenium webdriver 使用动作类在 selenium 中按 ctrl + T [重复]
java+selenium webdriver怎么实现数据参数化
无法使用Selenium和Java 11导入org.openqa.selenium.WebDriver
[Selenium+Java] Listeners and their use in Selenium WebDriver