我正在使用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:
感谢任何指导以解决此问题。
答案 0 :(得分:1)
电子邮件不是框架。您正在使用的条件用于frame(iframe tag),但是在这里您要处理输入标签。因此,我建议您根据需要检查该元素的可见性或该元素的存在。
答案 1 :(得分:1)
您需要注意几件事。
如果元素在frame / iframe内,而没有相关的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")
中找到相关的讨论
如果元素在a之内,则必须:
您可以使用以下任一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
中找到相关的讨论
您可以在以下位置找到一些相关的讨论