Ruby Selenium Webdriver元素不可单击

Ruby Selenium Webdriver元素不可单击,ruby,selenium,selenium-webdriver,Ruby,Selenium,Selenium Webdriver,我犯了一个错误 元素在点(100,12)处不可单击。其他因素会 收到此点击 我对这个问题做了一些研究,下面是我尝试过的解决方案 最大化窗口 driver.manage.window.maximize 滚动到视图中 driver.execute_script("arguments[0].scrollIntoView(true);", element) sleep(3) 这些似乎都不起作用 下面是HTML的布局 <body> <div> <di

我犯了一个错误

元素在点(100,12)处不可单击。其他因素会 收到此点击

我对这个问题做了一些研究,下面是我尝试过的解决方案

  • 最大化窗口

    driver.manage.window.maximize
    
  • 滚动到视图中

    driver.execute_script("arguments[0].scrollIntoView(true);", element)
    sleep(3)
    
  • 这些似乎都不起作用

    下面是HTML的布局

     <body>
       <div>
         <div>
           <div>
             <ul>
               <li> <a> Click me </a>
       ...
    

    有人知道我做错了什么吗?我还能做些什么呢?

    如果您试图使用元素的坐标单击该元素,请确保您有准确的坐标。您可以尝试以下代码:

    ele = driver.find_element(:xpath, "//li/a[contains(text(), 'Click me')]"
    
    int eleXCoordinate = ele.getLocation().getX();
    int eleYCoordinate = ele.getLocation().getY();  
    
    现在使用Robot类首先验证坐标是否正确

    Robot robot = new Robot();
    robot.mouseMove(dragElementXCoordinate, dragElementYCoordinate);
    
    如果鼠标移动到元素上,您就可以开始了。否则,尝试点击并尝试添加一些值以获得精确的坐标。例如

    Robot robot = new Robot();
    robot.mouseMove(dragElementXCoordinate +310, dragElementYCoordinate +100);
    
    现在您可以在屏幕上看到鼠标移到元素上,请执行单击

    robot.mousePress(InputEvent.BUTTON1_MASK);
    
    然后释放单击按钮

    robot.mouseRelease(InputEvent.BUTTON1_MASK);
    

    希望这有帮助

    在这种情况下,您应该尝试使用
    执行
    单击
    。执行脚本
    ,如下所示:-

    element = driver.find_element(:xpath, "//li/a[contains(text(), 'Click me')]")
    driver.execute_script("arguments[0].click();", element)
    

    希望它能帮助您……:)

    如果您查看异常,它会告诉您其他元素的HTML将收到单击。它是什么元素?你认识那个元素吗?也许是某个弹出div覆盖了你想要的元素,或者?我确实看到了。它是屏幕顶部的标志。点击这里没有意义。还有它点击的坐标是(100,12),我相信是左上角?这里没有预期的链接,这是有用的信息。现在你应该检查你的定位器,确保它得到了你想要的元素。它可能不够具体,无法找到多个元素。您可以打印outerHTML以查看元素的HTML,以确保它是正确的,并根据需要调整定位器。@JeffC我对selenium webdriver和ruby不熟悉。你能告诉我怎么打印outerhtml吗?是通过javascript实现的吗?我不知道Ruby,但您希望获得元素的属性“outerHTML”。如果你在谷歌上搜索一些,你会找到的。非常感谢,节省了很多时间
    element = driver.find_element(:xpath, "//li/a[contains(text(), 'Click me')]")
    driver.execute_script("arguments[0].click();", element)