猿问

Selenium click 方法正在执行然后超时

我正在使用 selenium webdriver 来运行我的自动化测试。我的一个测试打开一个登录页面,输入凭据并单击登录按钮。当我在本地运行它时,我可以看到它已成功登录到该站点,但是我的测试在 click 方法上引发了一个错误,即使我已经看到它移动到下一页。我也在使用 Chrome 驱动程序。


错误上的文字说:


OpenQA.Selenium.WebDriverException: '对 URL http://localhost:4444/click的远程 WebDriver 服务器的 HTTP 请求在 60 秒后超时。


内部异常 WebException:请求已中止:操作已超时。


这是我用来定位元素并单击它的代码:


private IWebElement LoginButton => Wait.Until(d => Driver.FindElementByCssSelector(".btn"));


private void ClickLoginButton()

{                               

    LoginButton.Click();

}

其他网站的其他点击方法工作正常,我似乎只看到此按钮出现此错误。


森林海
浏览 203回答 1
1回答

子衿沉夜

当 Selenium 执行时,click()它会尝试等待页面加载。从文档Click() 方法将尝试阻止,直到页面加载完毕如果IWebDriver没有收到此指示(document.readyState如果没记错的话),它将以WebDriverException.没有任何“漂亮”的解决方案。一种选择是ChromeOption在驱动初始化时设置ChromeOptions chromeOptions = new ChromeOptions();chromeOptions.AddAdditionalCapability("pageLoadStrategy","none");IWebDriver driver = new ChromeDriver(chromeOptions);但这会影响所有测试。另一种选择是抓住WebDriverTimeoutException这个特定的按钮private void ClickLoginButton(){    try    {        driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(1));            LoginButton.Click();    }    catch (WebDriverTimeoutException) { }    finally    {        driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(originalTime));    }}
随时随地看视频慕课网APP
我要回答