【问题标题】:How do I wait for a <ul> element to change because of an input search, given that if there are no results the ul is hidden?我如何等待 <ul> 元素因输入搜索而改变,如果没有结果,则 ul 被隐藏?
【发布时间】:2021-10-07 18:52:12
【问题描述】:

如果没有结果 被隐藏了?

  • 我尝试过 implicitWaitpageLoad 方法,但在这种情况下这些方法不起作用,因为我需要的是特定于元素的等待(页面及其元素已加载)。
  • 另外,等待特定的 &lt;ul&gt; 元素出现也是没有用的,因为在我输入搜索之前它已经存在。
  • 我也不能使用生成的&lt;li&gt; 元素作为标准来验证搜索,主要有两个原因:这是我在下一步测试中验证的内容; javascript 如果该搜索没有结果,则隐藏 &lt;ul&gt;

我需要的是某种等待&lt;ul&gt; 刷新/更改的方法,但我不确定它是否存在甚至是否有意义。

提前致谢!

【问题讨论】:

  • 该元素是否被刷新或仅更改了某些属性?这两种情况都有预期的条件。
  • 您能否edit 您的问题是在两种不同状态下包含列表的 HTML:1)当列表没有结果时; 2)当它有你正在寻找的结果时的列表。

标签: c# selenium selenium-webdriver specflow


【解决方案1】:

这两种状态都有预期的条件。
对于case元素被刷新可以使用。

wait.until(ExpectedConditions.stalenessOf(element));

元素属性改变可以使用

wait.until(ExpectedConditions.attributeContains(element, attribute, expectedValue));

【讨论】:

    【解决方案2】:

    我在发布后不久就解决了这个问题,但我只记得稍后给那些有兴趣的人提供答案。在加载搜索(ul)时出现了一个元素(微调器),通过使用开发工具冻结页面,我设法找到了该微调器元素。然后我只需要使用 SeleniumExtras.WaitHelpers.ExpectedConditions 等待它消失。无论如何感谢您的帮助!

    【讨论】:

      猜你喜欢
      • 2016-07-13
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      • 2014-09-12
      • 1970-01-01
      相关资源
      最近更新 更多