2 回答
TA贡献1777条经验 获得超3个赞
这种情况下的问题是我的 CSS 选择器确实无效。删除开头的“div class=”并添加“.” 解决了问题。
前:
"div class='showbox layout-align-center-center layout-row ng-star-inserted'"
后:
".showbox.layout-align-center-center.layout-row.ng-star-inserted"
感谢 Asyranok 为我的 CSS 选择器提供了正确的格式。在这种情况下,我不需要你的其余代码,而是我只是将正确的 CSS 格式从你的代码复制到我的解决方案中,它就起作用了。:)
我通常只在尝试识别元素时使用 xpath,所以我不习惯 CSS 和使用什么格式。
还要感谢 JeffC 证实了我的怀疑,即我需要等待模糊元素首先加载,然后再次等待它消失。
TA贡献1820条经验 获得超10个赞
所以我不是 100% 确定你所说的 CSS 元素是什么意思。但我认为这只是您可能用词不当。但是 CSS 是级联样式表。它是定义文档对象模型 (DOM) 元素外观的标记。
XPath 是一种为驱动程序定义元素位置以找到它并与之交互的方法。Css 选择器是在 DOM 的 xml 或 html 中查找元素的另一种方法。所以不存在“Css 元素”或“XPath 元素”这样的东西。它们只是“元素”。
至于解决你所看到的问题,你可以试试这个:
//This is called an extension method. It adds methods to an existing class. This should go in a static class that is accessible to your driver.
private static void WaitUntil(this IWebDriver driver, Func<bool> Condition, float timeout)
{
float timer = timeout;
while (!Condition.Invoke() && timer > 0f)
{
System.Threading.Thread.Sleep(500);
timer -= 0.5f;
}
System.Threading.Thread.Sleep(500);
}
driver.WaitUntil(() => driver.FindElementsBy(By.CssSelector(".showbox.layout-align-center-center.layout-row.ng-star-inserted").length == 0);
另请注意,您描述中的 CSS 选择器完全无效。我建议在像这样的教程中阅读它们。
- 2 回答
- 0 关注
- 126 浏览
添加回答
举报