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&gt;span

我把它放在我的代码中

driver.findElement(By.cssSelector(".add.u-yellow&gt;span")).click();

...它的工作原理:)

我不熟悉 Javascript,所以我不知道为什么 .add.u-yellow&gt;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