2017-07-29 106 views
0

我有一個腳本,從波蘭雅芳的網站獲取信息。所以基本上每個月他們都會改變價格,並且讓我的女孩的生活更輕鬆我只需下載價格以在Excel中查找表格即可。硒與Python 3.5和Chrome - 未能通過xpath點擊元素

不管怎麼說,所以我有導航到該網站上的腳本:一旦頁面加載它進入00000和99999之間的數字。在搜索框中,我覺得使用XPath https://www.avon.pl/szukaj/po-kodzie-produktu/

find_box_path = '//*[@id="ShopByProductNumber"]/div[2]/div[3]/div[1]/div/input'

只有部分代碼是有效的,所以如果搜索成功,腳本將點擊該項目,該項目將在新窗口中打開並處理信息,如果沒有發現,則轉到下一個數。該腳本檢查xpath以確定代碼是否有效。下面exctract會點擊的元素上,並打開一個新的標籤:

# ------------  click the product  ------------ 
find_item_text_element = WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_xpath(find_text_path)) 
find_item_text_element.click() 
time.sleep(0.4) 

的find_text_path變量聲明早些時候爲:

find_text_path = '//*[@id="ShopByProductNumber"]/div[2]/div[3]/p/a' 

的有趣的一點是,對於一年多來,我的腳本像魅力一樣工作。僅在兩天前劇本正在運行,我通過了25000個組合,直到它彎腰。從那一刻起,當腳本到達上面的位置時,它會關閉並重置。我明白爲什麼它重置 - 這是打算 - 但我不知道爲什麼它不會點擊元素。 IDE不顯示任何錯誤。

我使用XPather來查找xpaths,而上面的是一個有效的xpath。正如我所說的,到現在爲止工作得很好。我知道網站本身可以做一些事情來阻止自動化,但我沒有看到問題。任何人都可以看到/指出問題?也許有一些解決方法?

Location of both elements in question

編輯:

的問題就解決了。我使用的chrome配置文件中的縮放設置爲105%,而不是100%。這會導致webdriver在頁面上點擊錯誤的位置。

回答

0

你能告訴我們導致這個問題的具體的HTML代碼?我無法在網站上找到它。也許你試圖達到的元素現在被包含在一個框架中,但我只能假設沒有html。

+0

幾天前我真正想到了它。事實證明,縮放設置爲105%而不是100%。這會導致webdriver點擊頁面上的錯誤位置。我注意到,在我的調試過程中,當我決定使用'context_click()'而不是常規的'click()'時。一旦發現問題,應該編輯我的問題。 –