python - 在 Selenium 中找到该元素的最佳方法?

标签 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 的更好的想法上面的元素?

最佳答案

试试这个:

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/

相关文章:

java - WebDriver 无法定位元素(链接/Java)

java - 尝试让脚本根据 Selenium 中加载的页面顺序运行

java - 在 "chrome://downloads/"页面找不到 Web 元素

python - selenium.webdriver.firefox.options - 它是关于什么的?

python - 如何在 Pygame 中为矩形制作边框?

html - 从 Div 之间的 HTML TD 中获取值

selenium - 通过 XPath 相对查找元素

python - Poetry 未使用推荐的安装程序安装。无法自动更新

python - 蒙特卡洛模拟Python

python - 在数据帧的新列中返回 TextBlob 正、负或中性分类