2017-04-05 124 views
0

我想寫一個腳本來自動登錄到ebay使用python中的硒模塊。腳本自動登錄到ebay使用硒python

我可以在Firefox中啓動登錄頁面。這裏的代碼:

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 

firefox_capabilities = DesiredCapabilities.FIREFOX 
firefox_capabilities['marionette'] = True 
firefox_capabilities['binary'] = '/usr/bin/firefox' 

driver = webdriver.Firefox(capabilities=firefox_capabilities) 
driver.get("https://signin.ebay.in/ws/eBayISAPI.dll?SignIn&ru=http%3A%2F%2Fwww.ebay.in%2F") 

search_field = driver.find_element("Email or username") 
search_field.clear() 
search_field.send_keys("My username") 

但這似乎不工作。我不能使用

​​3210

因爲id保持動態變化。

<input size="40" maxlength="64" name="147630419" id="147630419" autocapitalize="off" autocorrect="off" placeholder="Email or username" class="fld" type="text"> 

這就是電子郵件佔位符的樣子。密碼的佔位符也類似。 「名稱」和「ID」動態變化。

我該如何解決這個問題?

+0

嘗試的XPath' 「」 提出了一個(//輸入[@ placeholder ='Email or username'])[2]「' –

回答

1

我不太確定driver.find_element()的用法,但我認爲在driver.find_element()中,您需要傳遞用戶名字段的位置(例如:xPath),而不是字符串格式的輸入字段的佔位符。

用戶名字段的XPath是"(//input[@placeholder='Email or username'])[2]",所以嘗試:

driver.find_element_by_xpath("(//input[@placeholder='Email or username'])[2]")

UPDATE

密碼字段的XPath是"(//input[@placeholder='Password'])[1]"

+0

您好@Jayesh,謝謝。它已經爲我工作了。腳本現在可以在字段中輸入用戶名了,我只是想知道[ 2]意味着,我也嘗試做同樣的密碼提交,因爲這兩個元素看起來相同,但它不起作用。 –

+0

@VivekBhageria xPath'//輸入[@placehol der ='Email or username']'返回數組中的2個元素。由於數組的第二個元素是我們想要的,所以我做了[2],這基本上意味着選擇索引2處的元素(索引從1開始) –

+0

@VivekBhageria我更新了我的答案以包含密碼字段的xPath。 –

1

因爲ID是動態變化去的XPath 。試試這段代碼。它的工作原理

driverInstance.find_element_by_xpath(".//*[@id='pri_signin']/div[4]/span[2]/input").send_keys("Hello") 
1

您使用find_element()方法不正確,你應該通過2個參數:byvalue

你可以試試下面的代碼行:

driver.find_element("css", "input:not(#userid)[placeholder='Email or username']").send_keys("My username") 

,但最好使用適當的方法find_element_by_...()像通過@Jayesh Doolani(+1)

+0

不應該是'By.CSS_SELECTOR'而不是''css「' –

+0

如果先前導入了selenium.webdriver.common.by.By,它可能是'By.CSS_SELECTOR'。 '「css」'也是可以接受的 – Andersson

+0

嗨安德森。我試過這一行代碼,但它會拋出selenium.common.exceptions.WebDriverException:Message:Unknown locator strategy css'錯誤。 Jayesh提出的那個工作。我現在需要讓它在密碼字段中工作。 –