【问题标题】:C# Selenium wait until element display is equal to noneC# Selenium 等到元素显示等于无
【发布时间】:2019-06-08 19:28:11
【问题描述】:

所以我正在尝试使用使用 javascript 的 selenium 更新页面,问题是页面自身使用 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>

【问题讨论】:

    标签: c# selenium selenium-webdriver webdriver webdriverwait


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

        安装包 DotNetSeleniumExtras.WaitHelpers -Version 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();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-03
        • 2011-10-23
        • 2020-06-12
        • 2015-08-29
        • 1970-01-01
        • 2014-04-26
        • 2021-09-05
        • 2014-05-03
        相关资源
        最近更新 更多