例如,这是源代码的一部分:
<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;">
,但每次加载时id
和src
都会不断更改页面,所以基本上我会先找到<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 :(得分: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
找到指定div的第一个iframe的另一种方法是使用类似的函数返回一个项而不是列表:
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(例如身高:600px)。但这也可以通过类似于我上面使用find_elements_by_xpath解释的方式完成。