c# - Selenium WebdriverTimeoutException 尽管页面已经加载
问题描述
我是 Selenium 的新手,并尝试以全屏模式自动打开网站。
- 该网站有一个登录名,该登录名已经在使用 Selenium。
- 登录后只需按下一个按钮。
因此WebdriverTimoutException
在倒数第二行抛出 an 。
InnerException
说NoSuchElementException
。_- 但是当我打开 Web 控制台时,我可以看到该按钮。
IWebDriver driver = new EdgeDriver(System.IO.Directory.GetParent(System.IO.Directory.GetParent(Environment.CurrentDirectory).ToString()).ToString() + "\\webdriver");
driver.Navigate().GoToUrl(@"http://examplehomepage.com");
driver.FindElement(By.Id("username")).SendKeys("abc");
driver.FindElement(By.Id("password")).SendKeys("password123");
driver.FindElement(By.TagName("button")).Click();
driver.Manage().Window.FullScreen();
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
IWebElement element = wait.Until(ExpectedConditions.ElementToBeClickable(By.TagName("button")));
element.Click();
我试过了:
- 边缘 (85.0.564.44)
- 铬 (85.0.4183.83)
- 火狐(80.0.1)。
解决方案
- 你可以使用 sleep 来延迟交互
- 您正在使用 ElementToBeClickable。您还应该使用 ElementToBeVisible 并检查是否也从 isEnabled 函数启用了元素。
推荐阅读
- c - 当动态内存分配显式转换为结构类型时,会发生什么?
- android-studio - 在离线模式下添加 FlutterBlue 插件
- ruby-on-rails - 如何在 RSpec 中存根异常并出现错误?
- websocket - 创建到 guacd 的 WebSocket 隧道失败:连接超时
- email - 如何在 Gmail 中创建一个电子邮件模板,将下一周的摘要发送到多个电子邮件地址
- java - 如何使用 Or 与 JUnit 假设
- python - 使用两个 \\ 而不是 \ 摆脱(unicode 错误)'unicodeescape'
- assembly - 8086 汇编寄存器间接 MOV 指令
- asp.net-web-api - 如何使用 Owin/Azure AD/OAuthV2 使 Web API 接受来自多个 ClientID 的请求
- svn - VS2017 反复将 GlobalSection 附加到解决方案文件中