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 關注
- 177 瀏覽
添加回答
舉報