Selenium Webdriver(Java)无法单击AJAX按钮

时间:2015-02-24 00:49:52

标签: java ajax selenium selenium-webdriver webdriver

我的网站顶部有一些按钮。 单击时,将出现一个新的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无法找到该按钮也无法点击它。

它返回错误

  

线程“main”中的异常org.openqa.selenium.WebDriverException:未知错误:元素在点(1776,32)处不可点击。其他元素将收到点击:     (会议信息:chrome = 40.0.2214.115)     (驱动程序信息:chromedriver = 2.14.313457(3d645c400edf2e2c500566c9aa096063e707c9cf),platform = Windows NT 6.3 x86_64)(警告:服务器未提供任何堆栈跟踪信息)   命令持续时间或超时:51毫秒

有人可以帮我吗?

感谢。

3 个答案:

答案 0 :(得分:1)

可能是li元素实际上是可点击的:

driver.findElement(By.cssSelector("li.add.u-yellow")).click();

答案 1 :(得分:0)

我找到了一个很好的解决方案。 基本上我使用FirePath(Firefox附加组件)来查找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开发人员的好工具:)

答案 2 :(得分:0)

这可能是很多事情。

  1. 该元素不在Web浏览器的可见视图端口中
  2. 页面尚未完成加载
  3. 该元素位于另一个元素
  4. 之后

    您可以尝试按其他人已建议的那样点击父元素:

    driver.findElement(By.cssSelector("li.add.u-yellow")).click();
    

    或者,您可以绑定span元素的类:

    driver.findElement(By.cssSelector("span[style='background-color: transparent;']")).click();