Selenium在此网站上似乎无效。这是为什么?我该怎么办?

问题描述 投票:0回答:1

我需要在Plus500网站上使用selenium来自动执行一个过程,但是我什至无法登录。我只是获得TimeoutException而无法找到页面中我需要输入凭据的部分。这是我用于登录的代码,但是我担心这个问题是更普遍的问题。有人知道为什么会这样吗?

driver.execute_script("window.open('https://app.plus500.com/trade?refurl=https%3A%2F%2Fwww.google.com%2F&innerTags=_cc_%20exp_new_sas_c&webvisitid=2a3139bc-78f7-4f48-a50d-c79e7b3e7abd&page=login&_ga=2.24870842.1255829517.1590833562-259196075.1590833562', 'new window')")
WebDriverWait(driver, 10).until(EC.element_to_be_clickable(
        (By.XPATH,'//*[@id="email"]'))).send_keys('myemail')
WebDriverWait(driver, 10).until(EC.element_to_be_clickable(
        (By.XPATH,'//*[@id="password"]'))).send_keys('mypassword') 
WebDriverWait(driver, 10).until(EC.element_to_be_clickable(
        (By.XPATH, '//*[@id="submitLogin"]'))).click()
python python-3.x selenium selenium-webdriver
1个回答
0
投票

您需要告诉selenium它应该认为哪个选项卡处于活动状态,打开新的选项卡不会更改硒角度中的活动选项卡。有多个选项可以实现此目的,如this answer中所述。

基本上,打开一个新选项卡后,您需要添加此额外的行:driver.switch_to.window(driver.window_handles[-1])和硒将知道您希望它在浏览器的最后一个选项卡上执行命令。

因此,固定代码为:

driver.execute_script("window.open('https://app.plus500.com/trade?refurl=https%3A%2F%2Fwww.google.com%2F&innerTags=_cc_%20exp_new_sas_c&webvisitid=2a3139bc-78f7-4f48-a50d-c79e7b3e7abd&page=login&_ga=2.24870842.1255829517.1590833562-259196075.1590833562', 'new window')")
driver.switch_to.window(driver.window_handles[-1])
WebDriverWait(driver, 10).until(EC.element_to_be_clickable(
        (By.XPATH,'//*[@id="email"]'))).send_keys('myemail')
WebDriverWait(driver, 10).until(EC.element_to_be_clickable(
        (By.XPATH,'//*[@id="password"]'))).send_keys('mypassword') 
WebDriverWait(driver, 10).until(EC.element_to_be_clickable(
        (By.XPATH, '//*[@id="submitLogin"]'))).click()
© www.soinside.com 2019 - 2024. All rights reserved.