我怎样才能选择一个 html 元素,无论它位于 selenium 中的哪个框架中?
- 2024-12-18 08:38:00
- admin 原创
- 66
问题描述:
我正在尝试选择位于 iframe 内且可能位于其他 iframe 中的元素。
是否有可能在 (python)selenium 中不先选择 iframe 而选择某个 (子)iframe 中的元素?有没有办法以某种方式“循环”遍历每个 iframe 并检查在哪里可以找到我的元素……?
那么,在元素、 html 内容和 iframe 即将被加载的情况下,该怎么做呢……?
解决方案 1:
不,如果不切换到相应的,就无法通过 Selenium 与任何WebElement进行交互。<iframe>
iframe
原因 :
当页面加载时,Selenium的焦点默认保持在顶部窗口上。顶部窗口包含其他窗口<iframes>
和框架集。因此,当我们需要与iframe 内的WebElement进行交互时,我们必须<iframe>
通过以下方法之一切换到相应的窗口:
帧切换方法:
我们可以通过3种方式切换至框架。
按框架名称:
iframe 的Name属性,通过它我们可以切换到它。
例子:
driver.switch_to.frame("iframe_name")
按帧 ID:
iframe 的ID属性,通过该属性我们可以切换到它。
例子:
driver.switch_to.frame("iframe_id")
按帧索引:
假设页面中有10个框架,我们可以通过索引切换到iframe。
例子:
driver.switch_to.frame(0)
driver.switch_to.frame(1)
切换回主框架:
default_content()
我们可以使用或切换回主框架parent_frame()
例子:
driver.switch_to.default_content()
driver.switch_to.parent_frame()
切换框架的更好方法:
切换框架的更好方法是通过设置WebDriverWait
为来诱导目标框架的可用性,如下所示:expected_conditions
frame_to_be_available_and_switch_to_it
通过框架ID:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it(By.ID,"id_of_iframe"))
通过框架名称:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.NAME,"name_of_iframe")))
通过框架Xpath:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"xpath_of_iframe")))
通过Frame CSS:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"css_of_iframe")))
参考
您可以在以下位置找到相关的详细讨论:
iframe 下 #document 的处理方法
解决方案 2:
编写自己的递归查找器应该很容易。抱歉,我不懂 Python,但在 Java 中应该是这样的:
public void findInAllFrames(WebElement e, String targetIdStr) {
List<WebElement> l = e.findElements(By.tagName("iframe"));
for(int inx=0; inx<l.size(); inx++) {
List<WebElement> targets = l.get(inx).findElements(By.id(targetIdStr));
if(targets.size()>0) {
// Do something with your targets
}
findInAllFrames(l.get(inx), targetIdStr);
}
}
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理必备:盘点2024年13款好用的项目管理软件