2015-03-30 53 views
1

我有一個非常令人沮喪的時間試圖找出發生了什麼。我的代碼上週工作,但無論如何,我沒有得到任何結果。在網站上搜索css選擇器「h3.one」時,我收到了超時消息。我的代碼應該找到所有與該CSS選擇器和這些元素的元素,返回diplayed。Selenium Extraction ...需要提取位於CSS選擇器的元素文本

我需要幫助特別是隱性等待

這裏是我的代碼:

browser = webdriver.Firefox() 
browser.get('https://www.voilanorbert.com/') 
inputElement = browser.find_element_by_id("form-search-name") 
inputElement.send_keys(leadslist[i][0]) 
inputElement = browser.find_element_by_id("form-search-domain") 
inputElement.send_keys(leadslist[i][1]) 
searchbutton = browser.find_element_by_name("search") 
searchbutton.click() 

wait = WebDriverWait(browser, 20) 
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "h3.one"))) 
h3s = browser.find_elements_by_css_selector('h3.one') 
h3 = next(element for element in h3s if element.is_displayed()) 
result = h3.text 
print (result) 

打印只是爲宗旨,以查看正在提取什麼/確保它實際上是做需要的事情。

回答

0

還有一個h3元素與class="one"這是真的不可見。這個元素搞亂了事情。

要麼讓你選擇特定的「成功」容器(爲我的作品):

div#result-success h3.one 

或等待results塊出現:

div.results 
+0

如果其看不見的,爲什麼會搞砸了嗎?上面的代碼不只是用class =「one」尋找可見的h3元素嗎? – ohbrobig 2015-03-30 18:43:18

+0

我不能讓選擇器特定於「成功」容器,因爲結果並不總是「成功」......你看它可能是「結果 - 錯誤h3.one」,「結果 - 失敗h3.one」 ,「結果catchall h3.one」或「結果成功h3.one」 – ohbrobig 2015-03-30 18:46:41

+0

@ohbrobig瞭解,謝謝。更新了答案。 – alecxe 2015-03-30 18:56:42

相關問題