Python 如何使用Selenium单击输入

Python 如何使用Selenium单击输入,python,selenium,selenium-chromedriver,Python,Selenium,Selenium Chromedriver,我有一个问题,我正试图使脚本自动登录到这个网站 问题是,几秒钟后,这个页面加载,你必须选择鞋子的尺寸,然后点击写着“Faça login para Compar”的按钮,好的,在我的机器人点击后,它会打开一个弹出窗口,我必须通知我的电子邮件和密码,然后点击登录按钮,问题是,我正在尝试,我不能点击输入来填写电子邮件和密码,也不能点击登录按钮,我相信这可能是因为它在一个div中 我的代码: from selenium.webdriver.chrome.options import Options

我有一个问题,我正试图使脚本自动登录到这个网站 问题是,几秒钟后,这个页面加载,你必须选择鞋子的尺寸,然后点击写着“Faça login para Compar”的按钮,好的,在我的机器人点击后,它会打开一个弹出窗口,我必须通知我的电子邮件和密码,然后点击登录按钮,问题是,我正在尝试,我不能点击输入来填写电子邮件和密码,也不能点击登录按钮,我相信这可能是因为它在一个div中

我的代码:

from selenium.webdriver.chrome.options import Options                                           
from selenium.webdriver.support import expected_conditions as EC                                
from selenium.webdriver.common.by import By    
from selenium.webdriver.common.keys import Keys                                                 

option = Options()                              
prefs = {'profile.default_content_setting_values': {'images': 2}}                                
option.add_experimental_option('prefs', prefs)  
driver = webdriver.Chrome(options = option)   
driver.get("https//www.nike.com.br/cosmic-unity-153-169-211-324680")                           
wait = WebDriverWait(driver, 10)                 
wait.untilEC.element_to_be_clickable((By.CSS_SELECTOR, '.cc-allow'))).click()       
wait.until(EC.element_to_be_clickable((By.XPATH, '//label[@for="tamanho__id40"]'))).click()    
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button#anchor-acessar-unite-oauth2'))).click()                                         
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'input#9f656f67-dbed-4cda-be83-0d0d0addc6f4'))).send_keys("test@gmail.com")                                             
wait.untillEC.element_to_be_clickable((By.CSS_SELECTOR, 'input#7016e824-f431-43d0-b5c9-d0331c330014'))).send_keys("mypass")                   
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button#a7f38f9a-afd7-42ce-a978-314a7d484343'))).click()
driver = webdriver.Chrome("C:\\Users\\etc\\Desktop\\Selenium+Python\\chromedriver.exe")
driver.maximize_window()
wait = WebDriverWait(driver, 30)
driver.get("https://www.nike.com.br/cosmic-unity-153-169-211-324680")
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.cc-allow'))).click()
wait.until(EC.element_to_be_clickable((By.XPATH, "//label[@for='tamanho__id40']"))).click()
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button#anchor-acessar-unite-oauth2'))).click()
wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID,"nike-unite-oauth2-iframe")))
wait.until(EC.element_to_be_clickable((By.NAME, 'emailAddress'))).send_keys("test@gmail.com")
wait.until(EC.element_to_be_clickable((By.NAME, 'password'))).send_keys("mypass")
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[value='ENTRAR']"))).click()
订购此代码并意识到它只在打开登录弹出窗口之前有效,然后它会生成此错误:

selenium.common.exceptions.TimeoutException: Message:**

该弹出窗口位于iframe内部,您需要将驱动程序焦点切换到该特定iframe

wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID,"nike-unite-oauth2-iframe")))
确保完成该弹出窗口后,切换到默认内容以继续

driver.switch_to.default_content()
更新1:

from selenium.webdriver.chrome.options import Options                                           
from selenium.webdriver.support import expected_conditions as EC                                
from selenium.webdriver.common.by import By    
from selenium.webdriver.common.keys import Keys                                                 

option = Options()                              
prefs = {'profile.default_content_setting_values': {'images': 2}}                                
option.add_experimental_option('prefs', prefs)  
driver = webdriver.Chrome(options = option)   
driver.get("https//www.nike.com.br/cosmic-unity-153-169-211-324680")                           
wait = WebDriverWait(driver, 10)                 
wait.untilEC.element_to_be_clickable((By.CSS_SELECTOR, '.cc-allow'))).click()       
wait.until(EC.element_to_be_clickable((By.XPATH, '//label[@for="tamanho__id40"]'))).click()    
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button#anchor-acessar-unite-oauth2'))).click()                                         
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'input#9f656f67-dbed-4cda-be83-0d0d0addc6f4'))).send_keys("test@gmail.com")                                             
wait.untillEC.element_to_be_clickable((By.CSS_SELECTOR, 'input#7016e824-f431-43d0-b5c9-d0331c330014'))).send_keys("mypass")                   
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button#a7f38f9a-afd7-42ce-a978-314a7d484343'))).click()
driver = webdriver.Chrome("C:\\Users\\etc\\Desktop\\Selenium+Python\\chromedriver.exe")
driver.maximize_window()
wait = WebDriverWait(driver, 30)
driver.get("https://www.nike.com.br/cosmic-unity-153-169-211-324680")
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.cc-allow'))).click()
wait.until(EC.element_to_be_clickable((By.XPATH, "//label[@for='tamanho__id40']"))).click()
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button#anchor-acessar-unite-oauth2'))).click()
wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID,"nike-unite-oauth2-iframe")))
wait.until(EC.element_to_be_clickable((By.NAME, 'emailAddress'))).send_keys("test@gmail.com")
wait.until(EC.element_to_be_clickable((By.NAME, 'password'))).send_keys("mypass")
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[value='ENTRAR']"))).click()

抱歉,我不明白,这将如何添加到我的代码中?在你跳转到弹出窗口之前,写下第一行
frame\u to\u it
,然后你可以有电子邮件和密码,然后点击Login添加这段代码
等待。直到(EC.frame\u to\u可用,并切换到它((By.ID,“nike-unite-oauth2-iframe”))
在我的代码'wait.until'的这一行之后(EC.element'to'u be'u clickable((By.CSS'SELECTOR,'button'anchor-acessar-unite-oauth2'))。单击()`并在我的代码的最后一行添加了这个
驱动程序。切换到.default\u content()
错误与您组装解决方案并将其应用于我的代码并将其添加到答案正文中相同吗?因为我不确定我是否得到了它right@Gjsks:查看更新1部分。