2012-03-03 50 views
1

例如,這裏是源的一部分:在硒中定位此元素的最佳方法?

<div id = "eg_1_2_3_0399483" style = "visibility: visible; display: block;"> 
    <iframe id = "default_23342522" src="http://example.com/random_string_skdfjgklsjklf" style = "height: 600px;"> 
... 

<div id = "eg_238_2348927" style = "visibility: hidden; display: none;"> 
    <iframe ... 

你看,有一個在源多iframe,我真的想找到是<iframe id = "default_23342522" src="http://example.com/random_string_skdfjgklsjklf" style = "height: 600px;">但隨着idsrc保持每次換水加載頁面,所以基本上我會先找到<div id = "eg_1_2_3_0399483" style = "visibility: visible; display: block;">然後去找它的子節點,問題是,你是怎麼做到的?嗯,我知道,找到第一個<div>元素的方法是這樣的:

element = browser.find_elements_by_xpath("//div[@style='visibility: visible; display: block;']") 

然後呢?

或者也許一些更好的想法如何找到iframe元素以上?

+0

CSS樣式屬性非常脆弱,我不會使用它們來標識元素。更好地使用來自具有不變ID或特定類組合的元素的路徑。然後,你可以簡單地執行'/ path/to/div/iframe [1]'。 – 2012-03-03 16:18:00

回答

1

試試這個:

element = browser.find_elements_by_xpath("//div[@style='visibility: visible; display: block;']/iframe[@style='height: 600px;']") 

如果希望只在指定的div第一個iframe中每次(在你的答案中所示),如果要提取什麼做呢

iframe=element[0] 

是在iframe中,那麼你可以這樣做:

iframe_content = iframe.text 

另一種方法來定位第一個iframe指定的div是通過使用類似的函數,返回的一個項目,而不是一個列表:

element = browser.find_element_by_xpath("//div[@style='visibility: visible; display: block;']/iframe[1]") 

上面我們用find_element_by_xpath,而不是find_elements_by_xpath剛剛找到指定的div的第一個iframe中。請記住,我沒有按其樣式指定iframe(例如,height:600px)。但是這也可以用類似的方式完成,正如我上面使用find_elements_by_xpath解釋的。

+0

非常感謝,夥計!我不知道你可以使用這樣的xpath,很快就會開始學習一些xpath! – Shane 2012-03-03 17:02:50

+0

我很高興能夠幫助你!如果你願意,請將我的答案標記爲正確。 :) – 2012-03-03 17:25:47

相關問題