2017-10-04 141 views
0

我試圖使用python和selen登錄到http://sports.williamhill.com/bet/en-gb使用python和selenium登錄網站

這是我到目前爲止已經試過:

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%肯定在這裏。

我在其他網站上成功地使用了這個腳本(有些修改),但是這個讓我很頭痛,而且我似乎無法在網上的任何地方找到答案。

如果有人能幫助我在這裏,將不勝感激!

+0

第一步:啓動一個調試器並找出哪個元件不可見 –

+0

進行一些睡眠以留出元素ti的加載時間。 –

+0

@SamirSadek不要使用睡覺...睡覺是一個不好的習慣。改用'WebDriverWait'。 – JeffC

回答

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() 
+0

工程就像一個魅力,絕對輝煌。非常感激。謝謝! – Baili

+0

永遠受歡迎。 :) –