Python: Войти на сайт, используя селен? - PullRequest
0 голосов
/ 18 марта 2020

Я хочу войти на следующий веб-сайт:

https://www.investing.com/equities/oil---gas-dev-historical-data

Вот что я пробовал до сих пор:

from selenium import webdriver
profile = webdriver.FirefoxProfile()
profile.set_preference("browser.download.folderList", 2)
profile.set_preference("browser.download.manager.showWhenStarting", False)
profile.set_preference("browser.download.dir", './ogdc.csv')
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/x-gzip")

driver = webdriver.Firefox(firefox_profile=profile)
driver.get('https://www.investing.com/equities/oil---gas-dev-historical-data')
driver.find_element_by_class_name("login bold")
driver.find_element_by_id('Email').send_keys('myemail')
driver.find_element_by_id('Password').send_keys('mypass')
driver.find_element_by_partial_link_text("Download Data").click()

Но я получаю следующее исключение:

NoSuchElementException

Как я могу войти на вышеуказанный веб-сайт?

Ответы [ 2 ]

1 голос
/ 18 марта 2020

Вам нужно сначала нажать Sign in, чтобы открыть всплывающее окно входа в систему, попробуйте следующий код:

driver.get('https://www.investing.com/equities/oil---gas-dev-historical-data')
driver.find_element_by_css_selector("a[class*='login']").click()
driver.find_element_by_id('loginFormUser_email').send_keys('myemail')
driver.find_element_by_id('loginForm_password').send_keys('mypass')
driver.find_element_by_xpath("//div[@id='loginEmailSigning']//following-sibling::a[@class='newButton orange']").click()
0 голосов
/ 18 марта 2020

Из того, что я могу сказать, вам нужно нажать кнопку «Войти» («login bold»), чтобы открыть всплывающее окно. Это не является частью начальной загрузки DOM и нужно некоторое время, чтобы появиться. Поэтому, в основном, дождитесь, пока #Email и #Password станут видимыми.

Вы должны иметь возможность использовать явное ожидание для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...