Selenium WebDriverWait不断抛出TimeoutException

时间:2020-06-16 23:12:50

标签: selenium selenium-webdriver iframe webdriverwait timeoutexception

我正在使用Selenium登录,如下所示:

ctrl-]

但我不断收到错误消息:

:nnoremap *help* <CR> <C-]>

我也尝试过:

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")

这是我正在访问的源HTML代码:

TimeoutException: Message:

感谢任何指导以解决此问题。

2 个答案:

答案 0 :(得分:1)

电子邮件不是框架。您正在使用的条件用于frame(iframe tag),但是在这里您要处理输入标签。因此,我建议您根据需要检查该元素的可见性或该元素的存在。

答案 1 :(得分:1)

您需要注意几件事。

如果元素在 / 内,而没有相关的HTML,则很难构造出规范的答案。但是,根据您共享的HTML,我看不到任何<frame> / <iframe>的存在。


通常,要在元素内发送字符序列,您需要对element_to_be_clickable()使用WebDriverWait,并且可以使用以下Locator Strategies中的任何一个:

  • CSS_SELECTOR

    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")
    

您可以在How to click on a element through Selenium Python

中找到相关的讨论

如果元素在a之内,则必须:

  • 诱导 WebDriverWait 以使所需的框架可用并切换到
  • 诱导 WebDriverWait 以使所需的元素可点击
  • 您可以使用以下任一Locator Strategies

    • 使用CSS_SELECTOR

      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

      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
      

      您可以在Unable to type within username field within ProtonMail signup page using Selenium and Python

      中找到相关的讨论

参考

您可以在以下位置找到一些相关的讨论

相关问题