在硒中找到这个元素的最佳方法是什么?

时间:2012-03-03 15:06:59

标签: python selenium webdriver

例如,这是源代码的一部分:

<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元素?

1 个答案:

答案 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解释的方式完成。