2016-06-30 61 views
0

我想抓取彈出窗口中的對話文本。問題是,我觸發鏈接後,窗口出現,但似乎硒驅動程序無法自動處理它,因爲我通過輸入driver.window_handles從本網站上的其他問題獲悉。 觸發的來源:如何使用selenium-python從對話中獲取文本?

enter image description here

len(driver.window_handles)值爲1。我想我可以得到窗口元素,然後通過get_attributes獲取文本,好在我成功通過

獲得元素
wd = driver.find_element_by_css_selector('div[node-type="repeat_list"]') 

selenium.webdriver.remote.webelement.WebElement(會話= 「f810cbbe-db43-4e8d-b484-664559ec8efc」,元素= 「{dd00e689-7991-44e9-85d3-76c69e79218f}」)

但是可悲的是我不知道如何從中得到所有的東西,因爲我不知道它們的屬性。

我不確定如果是對話,前端工程師告訴我它看起來像動畫。反正這是源代碼片段:

enter image description here

PS:瀏覽器是火狐

我認爲這可能違反了網站的可接受使用政策來抓取,然後我應該隱藏一些信息。抱歉。

+1

你能分享你正在使用的HTML嗎? – RemcoW

+0

是一個窗口彈出或新窗口 – SaiPawan

+0

@sai彈出一個窗口,methinks。然而,我已經從元素'wd'的子元素中提取了對話文本,我想知道如何處理彈出對話窗口來優化我現有的解決方案。 – lerner

回答

0

一旦你有你的父元素:

wd = driver.find_element_by_css_selector('div[node-type="repeat_list"]') 

您可以繼續調用這個對象的方法,並在此爲了達到子元素,你可以使用發現element_by_xpath,或find element_by_class name,例如:

wd = driver.find_element_by_css_selector('div[node-type="repeat_list"]') 
wd.find_element_by_class_name("list_box").find_element_by_class_name("list_ul").find_elements_by_class_name("list_li S_line1 clearfix") 

等等,直到您到達期望的元素下面的層次結構,並提取它的內容,如你所願。

我希望這有助於!

+0

你說得對,但我認爲可能有對話窗口的方法。 – lerner

+0

硒中沒有這樣的方法。正如你上面提到的那樣,len(driver.window.handles)是1,因此對話窗口被認爲是驅動程序關注的當前HTML頁面的一部分,在selenium中有處理警報的方法,但僅僅是因爲警報是一個由瀏覽器觸發的特殊類型的事件,一旦對話框是HTML層次結構的一部分,您必須如此對待它。 –

相關問題