Селен не работает на этом сайте. Это почему? Что я могу сделать? - PullRequest
0 голосов
/ 30 мая 2020

Мне нужно автоматизировать процедуру с селеном на веб-сайте Plus500, но я даже не могу войти в систему. Я просто получаю исключение 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()

1 Ответ

1 голос
/ 30 мая 2020

Вам нужно указать селену, какую вкладку он должен считать активной, открытие новой вкладки не изменяет активную вкладку в перспективе селена. Есть несколько вариантов для достижения этого, как описано в этот ответ .

В основном вам нужно добавить эту дополнительную строку после открытия новой вкладки: 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...