簡體   English   中英

如何僅計算顯示在WebPage上的元素。 硒

[英]How to count only elements displayed on WebPage. Selenium

我有一個帶有兩個標簽的網頁。

當我在一個選項卡上獲得元素計數時,它將為我同時顯示兩個選項卡的計數,而不是我單擊的那個計數。

因此,如果我要檢查Tab1上存在的元素,而不是Tab2上沒有的元素,則無法執行此操作,因為在兩個選項卡上都得到相同的結果。

if (driver.FindElements(By.XPath("//div[contains(text(), 'Dummy Text')]")).Count != 0)
{
    // Failed Test message ;
}

我希望在Tab1上計數為0,因為不會顯示此文本,在Tab2上計數應該為8,但在兩個選項卡上的計數均為8。

如何獲取顯示在頁面而非背景中的元素的數量?

我敢肯定這是因為網頁上的標簽頁,硒將這兩個標簽頁視為相同的網頁內容。

Selenium將返回DOM中的所有對象,而不僅僅是用戶可見的那些對象。

我不相信有任何XPath或CSS選擇器僅允許您選擇可見元素。 我可以想到一個潛在的令人討厭的XPath,它可以確保沒有父級顯示:無,但不知道這樣是否真的有效,並且聽起來太可怕,太復雜了,甚至無法考慮。

您需要遍歷每個返回的元素,並檢查“ displayed”是否返回false。 我很想將Driver類擴展為具有FindDisplayedElements方法,該方法將為您包裝此功能。

但是,如果您使用RemoteWebDriver,則此方法在API調用方面可能會很昂貴。 另一種選擇是確保父對象被隱藏,因為所有子對象也將繼承該行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM