例如,以下是部分来源:
<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
的更好的想法上面的元素?
最佳答案
试试这个:
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 解释的类似的方式完成。
关于python - 在 Selenium 中找到该元素的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9547126/