【问题标题】:Selenium “Element is not clickable at point” error in Firefox but working in ChromeFirefox 中的 Selenium“元素无法点击”错误但在 Chrome 中有效
【发布时间】:2016-04-22 12:38:26
【问题描述】:

在 Selenium 中,我试图定位一个元素。 但得到以下错误:

org.openqa.selenium.WebDriverException: Element is not clickable at point (1009.25, 448.183349609375). Other element would receive the click: <rect data-sdf-index="7" height="390" width="420" class="aw-relations-noeditable-area"></rect> (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 12 milliseconds

firefox 中收到此错误。但它在Chrome 浏览器中成功运行。 有人有解决办法吗?

我已经尝试过这篇帖子的帮助:-Selenium "Element is not clickable at point" error in Firefox,但无法得到结果。

我写了以下代码:

public void createPortOnSelectedNode( String nodeName ) {
    ISingleLocator m_nodeContainer = m_nodePage.getNodeContainer();
    WebElement node = m_nodePage.getNode( m_nodeContainer, nodeName ).getElement();
    Actions action = new Actions(DefaultDriver.getWebDriver());
    action.moveToElement(node, 40, 0);
    action.click();
    action.perform();
}

【问题讨论】:

  • 你试过使用javascript执行器吗?
  • 在点击所需元素之前尝试添加几秒钟等待
  • @noor 在这里我如何使用 javascript 执行器,因为我没有确切的 webelement。我正在从一个元素移动到没有任何 web 元素的 (40 ,0) 位置。执行点击操作后,将创建一个 WebElement。
  • @Anderson 是否有不使用 Thread.Sleep( ) 方法的另一种方法?
  • @noor 如果我将光标移到那里 (40,0),则会显示一个 rect 元素,否则不会显示任何内容。因此我移动到该位置以选择该元素。

标签: selenium firefox selenium-webdriver


【解决方案1】:

您好,上述错误出现在您的 webdriver 脚本执行操作但您要对其执行操作的元素未正确加载到 DOM 内 即其位置未在 DOM 树内固定的情况下(另请注意 selenium 能够执行其操作因为元素在 DOM 中可用DOM)

那么如何克服这个问题

   1.Give time to DOM to properly give positions to its element.

这可以通过以下方式实现:

1.Instead of performing operation's directly at the target area try to do some extra/false 
activity with webdriver which will give time for DOM to position all of his elements
2.apply Thread.sleep().
3. also if you are running your test in smaller window size then set the size to maximum it 
will also help

我没有包含任何代码,因为您在问题中引用的链接包含大量相关工作,因此我决定让每个人都低估了为什么会发生此错误。谢谢希望这有帮助

【讨论】:

  • 请让我了解您的方案是唯一我可以建议一些额外的活动
  • 有一个矩形,它只是代码中提到的节点。现在矩形的边最初是禁用的,禁用意味着你可以看到这些边但不能对其执行任何操作。所以我做了一些更改,这样当我将光标移到那里时,你会在那里找到小方框,如果你从那里移动光标,方块会被隐藏。现在在我的代码中使用 moveElement() 我移动到那个位置。当我点击矩形的一侧时,应该出现那个小方框。但是如上所述出现这个错误
  • 请先在页面上执行一些其他功能,而不是直接使用 MoveElement(),例如您可以计算页面或菜单项可用的链接总数,然后使用 MoveElement()跨度>
  • 我在该函数之前计算了数字“g”元素,但仍然给出相同的结果
  • 好的,你能执行一个根据你需要一些时间的功能吗?我猜计算 g 元素的时间不够
【解决方案2】:

您是否尝试过使用 Javascript 直接点击?在python中我使用

driver.execute_script("arguments[0].click();", elt)

在 Java 中,它应该看起来像 executeScript...

【讨论】:

    猜你喜欢
    • 2016-08-12
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多