gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 16:58:59 24 4
gpt4 key购买 nike

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

关于错误的文字说:

OpenQA.Selenium.WebDriverException: 'The HTTP request to the remote WebDriver server for URL http://localhost:4444/click timed out after 60 seconds.

Inner Exception WebException: The request was aborted: The operation has timed out.

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

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

private void ClickLoginButton()
{
LoginButton.Click();
}

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

最佳答案

当 Selenium 执行 click() 时,它将尝试等待页面加载。来自docs

the Click() method will attempt to block until the page has loaded

如果 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));
}
}

关于c# - Selenium click 方法正在执行然后超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51765048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com