2017-09-08 122 views
1

我對此完全陌生。使用硒登錄網頁

我下面的例子,我可以在這裏找到,並寫道:

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

thisDirectory = 'my directory' 

waitTime = 20 

URL_entry = "https://www.capitaliq.com" 
username = "my username" 
password = "my password" 

browser = webdriver.Chrome(executable_path=thisDirectory + 
'\\chromedriver.exe') 
browser.get(URL_entry) 

userNameBox = WebDriverWait(browser, waitTime).until(
EC.presence_of_element_located((By.XPATH, '//input[@id="txtUsername"]')) 
) 
userNameBox.send_keys(username) 

passwordBox = WebDriverWait(browser, waitTime).until(
EC.presence_of_element_located((By.XPATH, '//input[@id="txtPwd"]')) 
) 
passwordBox.send_keys(password) 
loginButton = WebDriverWait(browser, waitTime).until(
EC.presence_of_element_located((By.XPATH, '//input[@name="butSignin"]')) 
) 
loginButton.click() 
time.sleep(waitTime) 

我也嘗試了一些其他的稍微不同的方法,但總是得到錯誤信息:提高TimeoutException異常(消息,屏幕,堆棧跟蹤) TimeoutException:消息:

這是我第一次在這裏發帖,對不起,如果我做了不合適的事情。任何幫助將不勝感激。非常感謝。

回答

1

你用錯了定位器:有沒有元素與id屬性"txtUsername""txtPwd""butSignin"https://www.capitaliq.com登錄頁面...

嘗試以下行來代替:

userNameBox = WebDriverWait(browser, waitTime).until(
EC.presence_of_element_located((By.ID, 'username')) 
) 

userNameBox.send_keys(username) 

passwordBox = WebDriverWait(browser, waitTime).until(
EC.presence_of_element_located((By.ID, 'password')) 
) 

passwordBox.send_keys(password) 

loginButton = WebDriverWait(browser, waitTime).until(
EC.presence_of_element_located((By.ID, 'myLoginButton')) 
) 

loginButton.click() 

注意,定位符中的元素所有網站的授權表格都不一樣。爲了得到準確的定位器,你可以做

右鍵單擊瀏覽器元素 - >選擇「檢查元素」 - >選擇目標元素的源代碼在這裏您可以找到獨特的id/name值或其他屬性,這些屬性可以使用to locate element

+0

如果我想在同一個網頁「https://www.capitaliq.com」上點擊圖片**,還有一個問題(請讓我知道是否應該開始一個新帖子) ,讓我們說左上角「標普全球」,我該怎麼辦?我試圖通過src找到它沒有工作的元素。非常感謝。 – Noob

+0

我試過'browser.find_element_by_xpath('// a [img/@ src =「my src」]')。click()'但它不起作用 – Noob

+0

它應該是// a [img [@ src =「 /images/spgmi_logo.png「]]' – Andersson