Selenium WebDriverWait不断抛出TimeoutException
我使用Selenium登录到,如下所示:Selenium WebDriverWait不断抛出TimeoutException,selenium,selenium-webdriver,iframe,webdriverwait,timeoutexception,frame,Selenium,Selenium Webdriver,Iframe,Webdriverwait,Timeoutexception,Frame,我使用Selenium登录到,如下所示: driver.switch_to.default_content() WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.NAME,'email'))).send_keys("myemail@gmail.com") 但我不断地得到一个错误: TimeoutException: Message: 我也尝试过: WebDriverWait(driver
driver.switch_to.default_content()
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.NAME,'email'))).send_keys("myemail@gmail.com")
但我不断地得到一个错误:
TimeoutException: Message:
我也尝试过:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@id='email']"))).send_keys("myemail@gmail.com")
以下是我正在访问的源HTML代码:
<div id="signup-form">
<div class="logo"></div>
<h1 data-i18n="signin">Sign in</h1>
<div class="panels-wrapper">
<div class="panels">
<div class="panel step-1">
<input name="email" type="text" id="email" required="" maxlength="100">
<label for="email" data-i18n="email">Email</label>
登录
电子邮件
感谢您的指导,以解决此问题 电子邮件不是一个框架。您使用的条件用于frame(iframe标记),但这里您处理的是输入标记。因此,我建议您根据您的要求检查该元素的可见性或该元素的存在。电子邮件不是框架。您使用的条件用于frame(iframe标记),但这里您处理的是输入标记。因此,我建议您根据自己的要求检查该元素的可见性或该元素的存在情况。有几件事需要注意 如果元素在a/内,没有相关元素,则很难构造规范答案。但是,根据您共享的,我没有看到任何
/
通常,要在元素内发送字符序列,您需要将
元素用于可点击()
,您可以使用以下任一选项:
:CSS\u选择器
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#email[name='email']"))).send_keys("myemail@gmail.com")
driver.get('site_url') WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe_cssSelector"))) WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#email[name='email']"))).send_keys("myemail@gmail.com")
:XPATH
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='email' and @name='email']"))).send_keys("myemail@gmail.com")
driver.get('site_url') WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"iframe_xpath"))) WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='email' and @name='email']"))).send_keys("myemail@gmail.com")
如果元素在某个范围内,则必须:
- 诱导WebDriverWait以使所需帧可用并切换到该帧
- 诱导WebDriverWait使所需元素可单击
- 您可以使用以下任一选项:
- 使用
:CSS\u选择器
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#email[name='email']"))).send_keys("myemail@gmail.com")
driver.get('site_url') WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe_cssSelector"))) WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#email[name='email']"))).send_keys("myemail@gmail.com")
- 使用
:XPATH
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='email' and @name='email']"))).send_keys("myemail@gmail.com")
driver.get('site_url') WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"iframe_xpath"))) WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='email' and @name='email']"))).send_keys("myemail@gmail.com")
- 注意:您必须添加以下导入:
您可以在中找到相关的讨论from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
- 使用
参考文献 您可以在以下内容中找到一些相关讨论:
- 有几件事你需要注意
如果元素在a/内,没有相关元素,则很难构造规范答案。但是,根据您共享的,我没有看到任何
/
通常,要在元素内发送字符序列,您需要将
元素用于可点击()
,您可以使用以下任一选项:
:CSS\u选择器
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#email[name='email']"))).send_keys("myemail@gmail.com")
driver.get('site_url') WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe_cssSelector"))) WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#email[name='email']"))).send_keys("myemail@gmail.com")
:XPATH
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='email' and @name='email']"))).send_keys("myemail@gmail.com")
driver.get('site_url') WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"iframe_xpath"))) WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='email' and @name='email']"))).send_keys("myemail@gmail.com")
如果元素在某个范围内,则必须:
- 诱导WebDriverWait以使所需帧可用并切换到该帧
- 诱导WebDriverWait使所需元素可单击
- 您可以使用以下任一选项:
- 使用
:CSS\u选择器
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#email[name='email']"))).send_keys("myemail@gmail.com")
driver.get('site_url') WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe_cssSelector"))) WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#email[name='email']"))).send_keys("myemail@gmail.com")
- 使用
:XPATH
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='email' and @name='email']"))).send_keys("myemail@gmail.com")
driver.get('site_url') WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"iframe_xpath"))) WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='email' and @name='email']"))).send_keys("myemail@gmail.com")
- 注意:您必须添加以下导入:
您可以在中找到相关的讨论from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
- 使用
参考文献 您可以在以下内容中找到一些相关讨论: