Selenium chrome驱动程序click()方法不总是点击元素

本文关键字:元素 方法 驱动程序 chrome click Selenium | 更新日期: 2023-09-27 18:18:38

我正在用c#编写集成测试,当我在对话框内的某些元素上使用click()方法时,没有任何事情发生,我没有得到任何错误。它将单击对话框中的一些元素,而不单击其他元素。我想如果它没有正确地选择它们,那么它会抛出和异常,但它运行顺利,说测试通过,即使它从来没有真正点击按钮。该对话框是一个iframe。

我想也许它试图点击一个尚未显示或启用的按钮,所以我在click()调用之前添加了这个:

 _driver.SwitchTo().Frame(_frameElement);
     _wait.Until(d =>
    {
      var shippingInfoButton = d.FindElement(By.CssSelector("input[title ='Info']"));
      return shippingInfoButton.Displayed && shippingInfoButton.Enabled;
    });
       var infoButton = _driver.FindElement(By.CssSelector("input[title ='Info']"));
        ScrollToElement(infoButton);
        infoButton.Click();

再次运行,没有抛出异常,所以我假设它已经找到了元素,并且它被显示和启用。

如果你需要更多的信息,请告诉我。由于

Selenium chrome驱动程序click()方法不总是点击元素

我无法解释为什么selenium driver .click()方法不会在页面中的某些元素上触发,而不是其他元素,但我确实找到了解决方案。

使用IJavaScriptExecutor,您可以使用javascript单击元素,而不是在我的情况下,它工作。

这是运行IJavaScriptExecutor的代码,下面是我的整个方法。

    //IJavaScriptExecutor
    IJavaScriptExecutor js = _driver as IJavaScriptExecutor;
         js.ExecuteScript("arguments[0].click();", infoButton);
    //my whole method for clicking the button and returning the page object
    public ShippingMethodDetailsPageObject SelectShippingMethodInfo()
    {
        _driver.SwitchTo().Frame(_frameElement);
        _wait.Until(d =>
        {
         var shippingInfoButton = d.FindElement(By.CssSelector("input[title='Info']"));
            return shippingInfoButton.Displayed && shippingInfoButton.Enabled;
        });
         var infoButton = _driver.FindElement(By.CssSelector("input[title ='Info']"));
         IJavaScriptExecutor js = _driver as IJavaScriptExecutor;
         js.ExecuteScript("arguments[0].click();", infoButton);
        _driver.SwitchTo().DefaultContent();
        return new ShippingMethodDetailsPageObject(_driver, false);
    }

我遇到了一个类似的问题。如果是同样的问题,在ChromeDriver有一个错误,它不能点击某些元素,因为周围的div等。真的有点蹩脚。

一个简单的解决方法是发送回车键,例如element.SendKeys(Keys.Enter)。

我有一些测试在Firefox中一直有效,而在Chrome中它让我抓狂,因为有时它成功通过,有时"。点击"不工作,测试将失败。

花了很长时间才注意到它,但原因是:我过去常常将浏览器最小化到80%,以便能够在IDE旁边看到浏览器。看来"。当我点击的时候,点击"不工作

至少对我来说这是一个问题