首页 文章

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

提问于
浏览
0

我的网站顶部有一些按钮 . 单击时,将出现一个新的AJAX部分 .

我不太熟悉HTML,但按钮"Add"(此按钮是我的目标)以某种方式位于 <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

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

    driver.findElement(By.cssSelector("li.add.u-yellow")).click();
    
  • 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开发人员的好工具:)

  • 1

    这可能是很多事情 .

    • 该元素不在Web浏览器的可见视图端口中

    • 页面尚未完成加载

    • 该元素位于另一个元素后面

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

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

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

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

相关问题