C#Selenium等待元素显示等于无

时间:2019-06-08 19:28:11

标签: c# selenium selenium-webdriver webdriver webdriverwait

因此,我尝试使用使用javascript的硒更新页面,问题是页面自身使用javascript提示总是存在的元素来完成页面,但是当更新未进行时,样式设置为

display: none;

如何使用(wait.Until)-示例

wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.Id("")));

关于样式更改?

例如

wait.Until(Display: Block; is true);

HTML元素是

<example id="example" style="display: none;" aria-hidden="true">


</example>

2 个答案:

答案 0 :(得分:1)

要等待JavaScript将element属性更改为 style="display: none;" ,必须为InvisibilityOfElementLocated()引入 WebDriverWait ,您可以使用以下解决方案:

new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(SeleniumExtras.WaitHelpers.ExpectedConditions.InvisibilityOfElementLocated(By.Id("element_id")));

答案 1 :(得分:0)

对于C#,您可以按照以下步骤操作。

  1. 使用命令从NuGet下载所需的软件包

    安装软件包DotNetSeleniumExtras.WaitHelpers-版本3.11.0

  2. 例如,您想从自动填充文本框中为“ bubai”一词选择建议。 假设隔离使用ul和li填充。

a)要从迪拜进行搜索,请使用

将其发送到文本框
  var txtSearch = driver.FindElements(By.Id("test_autocomplete")).FirstOrDefault();
        txtSearch.SendKeys("dubai");

b)现在确保ul元素可用/可见

 new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(
 SeleniumExtras.WaitHelpers.ExpectedConditions.InvisibilityOfElementLocated(By.Id("ul-id")));

c)然后检查并单击是否填充了建议

   string XpathForLi = "//*[@id='ul-id']/li[1]";

   new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementToBeClickable(By.XPath(XpathForLi))).Click();