c# - WebDriverWait 不等待我指定的元素
问题描述
我试图让我的代码在尝试从元素中获取文本之前等待元素出现。如果我逐步执行允许元素时间出现的代码,它会按预期工作,但如果我在没有断点的情况下运行它,则等待似乎被忽略并引发异常。
我不明白为什么它被忽略?
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
IWebElement message = wait.Until(driver => driver.FindElement(By.ClassName("block-ui-message")));
string messageText = message.Text;
解决方案
作为替代方案,您可以诱导WebDriverWait并且ElementIsVisible()
您可以使用以下Locator Strategy:
string messageText = new WebDriverWait(driver, TimeSpan.FromSeconds(30)).Until(ExpectedConditions.ElementIsVisible(By.ClassName("block-ui-message"))).GetAttribute("innerHTML");
DotNetSeleniumExtras.WaitHelpers
与 一起使用nuget
:
不是很清楚我需要的特定 using 指令到底是什么意思。如果您使用SeleniumExtras和WaitHelpers,您可以使用以下解决方案:
string messageText = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.ClassName("block-ui-message"))).GetAttribute("innerHTML");
推荐阅读
- laravel - 如何修复我的 laravel heroku 部署错误
- c# - 如何使用 FluentMigration 在预览 sql 脚本中添加开始事务和回滚事务?
- c# - 如何在运行时将 Xml 属性添加到属性
- react-native - 顶部对齐图像
- javascript - 一个驱动器 api 安全 URL
- python - Tensorflow 2.0 无法识别张量形状
- javascript - 在 Reactjs 中实现拖放组件的问题
- spring-boot - 在 Spring Boot 应用程序中进行 put 操作后,CaffeineCache 不会立即刷新
- python - pip 安装可编辑包产生 ModuleNotFoundError
- php - Laravel / 嵌套验证