通过Selenium和python切换到iframe
如何在selenium knowing only中切换到此iframe通过Selenium和python切换到iframe,python,selenium,selenium-webdriver,iframe,webdriver,css-selectors,xpath,Python,Selenium,Selenium Webdriver,Iframe,Webdriver,Css Selectors,Xpath,如何在selenium knowing only中切换到此iframe <iframe name="Dialogue Window"> 您可以使用XPath来定位: iframe = driver.find_element_by_xpath("//iframe[@name='Dialogue Window']") driver.switch_to.frame(iframe) driver.switch_to.default_content() 然后切换到: iframe =
<iframe name="Dialogue Window">
您可以使用XPath来定位
:
iframe = driver.find_element_by_xpath("//iframe[@name='Dialogue Window']")
driver.switch_to.frame(iframe)
driver.switch_to.default_content()
然后切换到
:
iframe = driver.find_element_by_xpath("//iframe[@name='Dialogue Window']")
driver.switch_to.frame(iframe)
driver.switch_to.default_content()
以下是如何切换回默认内容(在
之外):
根据
元素的HTML,它将name属性设置为对话窗口。因此,要在
中切换,您需要使用该方法,并且可以使用以下任一方法:
- 使用
节点的name属性,如下所示:
# driver.switch_to.frame(‘frame_name’)
driver.switch_to.frame("Dialogue Window")
driver.switch_to.frame(driver.find_element_by_name('Dialogue Window'))
driver.switch_to.frame(driver.find_element_by_css_selector("iframe[name='Dialogue Window']"))
driver.switch_to.frame(driver.find_element_by_css_selector("//iframe[@name='Dialogue Window']"))
- 使用通过名称属性标识的
,如下所示:
# driver.switch_to.frame(‘frame_name’)
driver.switch_to.frame("Dialogue Window")
driver.switch_to.frame(driver.find_element_by_name('Dialogue Window'))
driver.switch_to.frame(driver.find_element_by_css_selector("iframe[name='Dialogue Window']"))
driver.switch_to.frame(driver.find_element_by_css_selector("//iframe[@name='Dialogue Window']"))
- 使用通过以下方式识别的
:
# driver.switch_to.frame(‘frame_name’)
driver.switch_to.frame("Dialogue Window")
driver.switch_to.frame(driver.find_element_by_name('Dialogue Window'))
driver.switch_to.frame(driver.find_element_by_css_selector("iframe[name='Dialogue Window']"))
driver.switch_to.frame(driver.find_element_by_css_selector("//iframe[@name='Dialogue Window']"))
- 使用通过以下方式识别的
:
# driver.switch_to.frame(‘frame_name’)
driver.switch_to.frame("Dialogue Window")
driver.switch_to.frame(driver.find_element_by_name('Dialogue Window'))
driver.switch_to.frame(driver.find_element_by_css_selector("iframe[name='Dialogue Window']"))
driver.switch_to.frame(driver.find_element_by_css_selector("//iframe[@name='Dialogue Window']"))
- 理想情况下,对于所需的帧,您应该使用as
frame\u将其连接到\u be\u available\u,并将\u切换到\u it()
,如下所示:
# driver.switch_to.frame(‘frame_name’)
driver.switch_to.frame("Dialogue Window")
driver.switch_to.frame(driver.find_element_by_name('Dialogue Window'))
driver.switch_to.frame(driver.find_element_by_css_selector("iframe[name='Dialogue Window']"))
driver.switch_to.frame(driver.find_element_by_css_selector("//iframe[@name='Dialogue Window']"))
- 使用
名称
:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.NAME,"Dialogue Window")))
- 使用
CSS\u选择器
:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[name='Dialogue Window']")))
- 使用
XPATH
:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@name='Dialogue Window']")))
- 要切换回父帧,可以使用以下代码行:
driver.switch_to.parent_frame()
driver.switch_to.default_content()
- 要切换回顶层浏览上下文/顶层窗口,可以使用以下代码行:
driver.switch_to.parent_frame()
driver.switch_to.default_content()
tl;博士
很好的通用解决方案,特别是如果iframe必须以名称以外的其他名称作为目标,这是唯一指定转换的方法。为此,您需要做很多工作。我被困在这个问题上好几个小时了,因为我花了很长时间才发现我在一个iframe中,而你的解决方案正是我不想再讨厌我的工作所需要的哈哈。请看:这样的期望是,用户提问时不仅要研究回答他们自己的问题,还要分享研究、代码尝试和结果。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!另见: