【问题标题】:Selenium click not always working硒点击并不总是有效
【发布时间】:2015-10-21 21:14:36
【问题描述】:

我有一些单击选项卡的测试,但并不总是执行单击。

  • xpath 是正确的,因为大多数时候测试都有效

  • 这不是时间问题,因为我使用了 thread.sleep() 和其他方法来确保元素在点击之前可见

  • 测试认为它正在执行点击,因为它在“执行”点击时没有抛出 ElementNotFoundException 或任何其他异常。由于选项卡内容不会更改,因此单击后测试稍后会失败。

更多信息 我正在使用 Selenium 2.44.0 实现在 Chrome 44.0.2403.107 m 上运行的 Java 测试。

还有什么我可以做的,或者这可能是硒的问题吗?

【问题讨论】:

  • jeremy -chrom v44 在点击事件和各种发送键组合方面存在已知问题(换句话说,它相当没用)。对此有很多讨论,因为这是 chrome 第一次在这方面大幅下滑。我的许多测试现在也失败了,我没有意识到这个问题,并且正在添加一个全新的等待包,直到我发现 v44 存在问题 - 希望这会有所帮助
  • 感谢您的回复。我想我们将不得不等待新版本的 chrome。

标签: java google-chrome selenium selenium-webdriver click


【解决方案1】:

您可以尝试以下几种方法:

  • 显式elementToBeClickable 等待:

    WebDriverWait wait = new WebDriverWait(webDriver, 10);
    
    WebElement button = wait.until(ExpectedConditions.elementToBeClickable(By.id("myid")));
    button.click()
    
  • 在点击之前移动到元素:

    Actions actions = new Actions(driver);
    actions.moveToElement(button).click().build().perform();
    
  • 通过 javascript 进行点击:

    JavascriptExecutor js = (JavascriptExecutor)driver;
    js.executeScript("arguments[0].click();", button);
    

【讨论】:

  • alec,对各种方法的总结很不错 - 加一个!
  • 这些方法都不适合我。除了js方法外,点击注册在元素上,点击后元素以虚线边框高亮。但是,什么也没有发生。当我手动点击同一个按钮时,点击就可以了。
  • @sumitkumarpradhan 的建议是 driver.findElement(button).sendKeys(Keys.RETURN);driver.findElement(button).sendKeys(Keys.ENTER);,如果您不想点击链接。
  • 任何想法为什么第一个和第二个解决方案并不总是有效(我创建了一个 while 循环,它只适用于 95%)但最后一个总是有效?在我的情况下,它是页面加载后的第一次点击,可能是 chrome 错误?
  • @wutzebaer 最后一个总是有效的原因是它是一种实现相同目标的编程方式。如果我使用 selenium 进行数据收集而不是测试,我更喜欢使用这种方法。 .
【解决方案2】:

如果选项卡名称包含任何唯一字符串,您可以使用linkText。并确保您的标签不是动态的。它应该在源代码中可见(手动源代码(ctrl+u))。

【讨论】:

    【解决方案3】:

    以下方法对我有用

    WebElement button = SeleniumTools.findVisibleElement(By.cssSelector("#cssid"));
    
    Actions actions = new Actions(driver);
    
    actions.moveToElement(button).click().build().perform();
    

    【讨论】:

      猜你喜欢
      • 2021-05-04
      • 1970-01-01
      • 2017-05-11
      • 2021-08-17
      • 1970-01-01
      • 1970-01-01
      • 2013-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多