0
我有一塊div,你可以點擊顯示手風琴風格的內容。可以在XPath定位器上使用CSS屬性以確保元素可見嗎?
我正在通過selenium的這個模塊來打開它們,然後最終獲取屏幕截圖。然而,我不確定如何最好地檢查手風琴項目已經顯示,然後再進入下一個。
目前我的測試運行通過,但最終的屏幕截圖顯示一些項目仍然關閉。我的代碼:
detailsAccordion = self.ff.find_elements_by_class_name('accordion')
index = 1
for option in detailsAccordion:
try:
WebDriverWait(self.ff, 10).until(lambda driver : driver.find_element_by_xpath("//div[@class='accordionContainer']/div["+
str(index) +"]/h3[1]")).click()
# Need a WebDriverWait here for style='display: block;' on the current div
except:
print "Can't access div #" + unicode(index)
index = index + 1
如果我添加一行像;
WebDriverWait(self.ff, 10).until(lambda driver : driver.find_element("//div[@class='accordionContainer']/div["+
str(index) +"][@style='display: block;']"))
我得到我的異常打印,所以有可能在每個div的顯示屬性上添加一個要求嗎?
我試過以下,但它不會等待每個項目打開。有些失敗,但有一個時間睡眠(1),他們都工作。 'WebDriverWait(self.ff,10).until(lambda driver:driver.find_element_by_xpath(「// div [@ class ='accordionContainer']/div [」+ str(index)+「]/div [@ class =' accordionContent']「)。is_displayed())' – 2012-07-18 10:07:55
一個隱含的等待會起作用,但這與我試圖避免的睡眠有效地相同。我寧願webdriver可以看到div的CSS屬性已經設置爲顯示:塊來提高腳本的速度。 – 2012-07-19 09:16:17
10秒的隱含等待並不意味着驅動程序將每次等待10秒來加載頁面。這意味着如果司機沒有找到你正在尋找的元素,那麼它將等待10秒。因此,您不會因使用隱式等待而失去時間。 – 2012-07-19 16:56:46