使用python和selenium登录网站

时间:2017-10-04 16:13:03

标签: python selenium web-scraping

我正在尝试使用python和selenium登录http://sports.williamhill.com/bet/en-gb

这是我到目前为止所尝试的内容:

from selenium import webdriver

session = webdriver.Chrome()
session.get('https://sports.williamhill.com/bet/en-gb')

# REMOVE POP-UP
timezone_popup_ok_button = session.find_element_by_xpath('//a[@id="yesBtn"]')
timezone_popup_ok_button.click()

# FILL OUT FORMS
usr_field = session.find_element_by_xpath('//input[@value="Username"]')
usr_field.clear()
WebDriverWait(session, 10).until(EC.visibility_of(usr_field))
usr_field.send_keys('myUsername')
pwd_field = session.find_element_by_xpath('//input[@value="Password"]')
pwd_field.clear()
pwd_field.send_keys('myPassword')
login_button = session.find_element_by_xpath('//input[@id="signInBtn"]')
login_button.click()

我收到以下错误。

selenium.common.exceptions.ElementNotVisibleException: Message: element not visible

尝试执行时

usr_field.send_keys('myUsername')

如果我使用检查器工具查看usr_field元素似乎是可见的,但是我不是100%肯定。

我正在其他网站上成功使用这个脚本(经过一些修改),但是这个脚本给我带来了真正的麻烦,我似乎无法在网上的任何地方找到答案。

如果有人能帮助我,我将不胜感激!

1 个答案:

答案 0 :(得分:1)

以下代码将解决此问题。

from selenium import webdriver


session = webdriver.Chrome()
session.get('https://sports.williamhill.com/bet/en-gb')

# REMOVE POP-UP
timezone_popup_ok_button = session.find_element_by_xpath('//a[@id="yesBtn"]')
timezone_popup_ok_button.click()

# FILL OUT FORMS

user_element = session.find_element_by_name("tmp_username")
user_element.click()

actual_user_elm = session.find_element_by_name("username")
actual_user_elm.send_keys("myUsername")


password_element = session.find_element_by_id("tmp_password")
password_element.click()

actual_pass_element = session.find_element_by_name("password")
actual_pass_element.send_keys("myPassword")

login_button = session.find_element_by_xpath('//input[@id="signInBtn"]')
login_button.click()