如何使用Selenium和Python在嵌套iFrame中定位元素
试图在页面底部找到如何使用Selenium和Python在嵌套iFrame中定位元素,python,html,selenium,xpath,frame,Python,Html,Selenium,Xpath,Frame,试图在页面底部找到标记的xpath,这让我抓狂。框架使问题复杂化。有人能告诉我这个的xpath吗 我正在尝试编写一个selenium脚本,我已经做到了: EC.frame_to_be_available_and_switch_to_it, ((By.NAME, "main")) 在此之后,我的xpath尝试都没有成功地获取标记中的内容,标记上写着supplier HTML: 另一个选项: //nobr[.='Suppliers']/parent::span 对于框架集: //frameset
标记的xpath,这让我抓狂。框架使问题复杂化。有人能告诉我这个的xpath吗
我正在尝试编写一个selenium脚本,我已经做到了:
EC.frame_to_be_available_and_switch_to_it, ((By.NAME, "main"))
在此之后,我的xpath尝试都没有成功地获取
标记中的内容,标记上写着supplier
HTML:
另一个选项:
//nobr[.='Suppliers']/parent::span
对于框架集:
//frameset[@rows='48,*']
由于所需元素位于多个网络
中,因此要在元素上调用单击()
,您必须:
- 诱导WebDriverWait,使伟大的祖父母
框架\u可用\u并\u切换到\u it()
- 诱导WebDriverWait使父级
框架\u可用\u并将\u切换到\u it()
- 将父
帧的WebDriverWait设置为\u可用,\u并将\u切换为\u it()
- 将所需
元素的WebDriverWait设置为可单击()
- 您可以使用以下解决方案:
- 使用
:CSS\u选择器
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe#main[name='main']"))) WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[name='marketcenterHome']"))) WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe#main[name='TabNavigation']"))) element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "span.tabSelText>nobr")))
- 使用
:XPATH
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@id='main' and @name='main']"))) WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@name='marketcenterHome']"))) WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@name='TabNavigation']"))) element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//span[@class='tabSelText']/nobr[text()='Suppliers']")))
- 注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
- 使用
参考文献 您可以在以下内容中找到一些相关讨论:
我感谢每一位花时间回答问题的人。
//span[@class=“tabSelText”]
?如果有多个条目,请在Span之前添加节点。我理解该部分,但我在main之后的某个地方出错了。有人对此有什么想法吗。我花了太长时间试图弄明白这一点,因为它们是嵌套的帧,所以你必须遍历它们。您可能必须先切换到帧集才能获得第二帧。然后切换到该帧内的帧集。。。然后切换到框架集中的框架,这就是您的跨度所在。谢谢pcalkins。我往下看了一点,但是下一个框架集没有id。这可能吗?当它如此复杂的时候,框架对我来说是新的。这是下一个,希望是最后一个框架集,只是不知道如何进入,谢谢你的详细回复。我似乎有一个问题,我无法切换到主,因为它无法找到。在此之前,我已成功切换到与main相同级别的标题框,并单击了一个链接。在我选择main之前,是否需要执行一些操作来退出标题?已修复。明天我会发布解决方案