簡體   English   中英

python硒提交可以交互工作,但不是在腳本中工作,甚至沒有時間.sleep

[英]python selenium submit works interactively but not in a script, not even with time.sleep

我正在嘗試使用Selenium Webdriver從python腳本登錄到站點,以便下載一些僅對注冊用戶可用的數據。

我有以下代碼:

browser = webdriver.Firefox()
browser.get('https://shop.biogast.at/store15/customer/account/login')
emailElem = browser.find_element_by_id('email')
emailElem.send_keys('12345')
passwordElem = browser.find_element_by_id('pass')
passwordElem.send_keys('12345')
passwordElem.submit()

當將命令一一鍵入到python3 shell時,它可以正常工作。 但是,當我將代碼作為腳本運行時,用戶名和登錄名正確填寫,但用戶名和登錄名字段未登錄,而不是登錄。 腳本完成,並且沒有錯誤消息。

根據其他人在類似情況下的建議,這可能是一個時序問題,因為腳本的運行速度比命令一一鍵入時要快得多。 因此,我將腳本擴展為包括一些睡眠值。

browser = webdriver.Firefox()
browser.get('https://shop.biogast.at/store15/customer/account/login')
time.sleep(15)
emailElem = browser.find_element_by_id('email')
emailElem.send_keys('12345')
time.sleep(15)
passwordElem = browser.find_element_by_id('pass')
passwordElem.send_keys('12345')
time.sleep(15)
passwordElem.submit()

不幸的是,結果仍然相同。 字段被空白,腳本完成沒有錯誤。 當我一一運行命令時,即使命令之間的間隔少於15秒,它也能很好地工作,因此,這似乎並不是一個定時問題。

你有什么想法我應該找到原因嗎? 非常感謝你。

使用WebDriverWait處理元素。

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

browser = webdriver.Firefox()
wait = WebDriverWait(browser,40)
browser.get('https://shop.biogast.at/store15/customer/account/login')

emailElem = wait.until(EC.element_to_be_clickable((By.ID, 'email'))) #browser.find_element_by_id('email')
emailElem.send_keys('12345')

passwordElem = wait.until(EC.element_to_be_clickable((By.ID, 'pass'))) #browser.find_element_by_id('pass')
passwordElem.send_keys('12345')
passwordElem.submit()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM