Ruby Selenium Webdriver元素不可点击

时间:2016-07-05 22:11:14

标签: ruby selenium selenium-webdriver

我收到错误

  

元素在点(100,12)处无法点击。其他元素会   收到此点击

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

  1. 最大化窗口

    driver.manage.window.maximize
    
  2. 滚动浏览

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

    这是HTML的布局

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

    我获得元素的方式是

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

    任何人都知道我做错了什么?我还能做些什么?

2 个答案:

答案 0 :(得分:1)

在这种情况下,您应尝试使用click执行.execute_script,如下所示: -

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

希望它会帮助你...... :)

答案 1 :(得分:0)

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

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);

希望这有帮助!