如何使用Selenium和python切换到iframe?
我已经将Selenium用于许多项目,没有遇到任何问题。然而,这一次没有骰子 我正在尝试自动化签出过程,有时会出现重新输入信息的提示。该窗口有一个javascript弹出窗口(我想),虽然我可以毫无问题地选择如何使用Selenium和python切换到iframe?,python,selenium,xpath,iframe,css-selectors,Python,Selenium,Xpath,Iframe,Css Selectors,我已经将Selenium用于许多项目,没有遇到任何问题。然而,这一次没有骰子 我正在尝试自动化签出过程,有时会出现重新输入信息的提示。该窗口有一个javascript弹出窗口(我想),虽然我可以毫无问题地选择部分,但我无法找到iframe并专注于它 因此,这是可行的: driver.find_elements_by_id('app') 但是,无法识别帧并切换到它。例如,这些都不起作用: driver.find_element_by_id() driver.find_element_by_nam
部分,但我无法找到iframe
并专注于它
因此,这是可行的:
driver.find_elements_by_id('app')
但是,无法识别帧并切换到它。例如,这些都不起作用:
driver.find_element_by_id()
driver.find_element_by_name()
driver.find_element_by_xpath()
我假设是因为我无法找到并切换到iframe
帮忙
或
在您的情况下,您可以使用:
driver.switch_to.frame(driver.find_element_by_tag_name("iframe"));
要切换回主要用途,请执行以下操作:
driver.switch_to_default_content()
请尝试此代码切换到帧
frame = driver.find_element_by_xpath('//div[starts-with(@id, "zoid-ec-payment")]/iframe')
driver.switch_to.frame(frame)
文本为电子邮件登录名的元素位于
中,因此您必须:
- 使所需帧可用并切换到该帧
- 您可以使用以下任一选项:
- 使用
:CSS\u选择器
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe.zoid-visible[title='ec_payment'][name^='__zoid__ec__payment']")))
- 使用
:XPATH
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@class='zoid-visible' and @title='ec_payment'][starts-with(@name, '__zoid__ec__payment')]")))
- 使用
- 注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
参考文献 您可以在以下内容中找到一些相关讨论:
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@class='zoid-visible' and @title='ec_payment'][starts-with(@name, '__zoid__ec__payment')]")))
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC