下面是我的python腳本的代碼片段,它是讀取excel文件並將行中的單元格分配給變量,然後用於鍵入字段在瀏覽器中。它在很大程度上效果很好。我想要做的是在瀏覽器加載頁面之後設置某種循環來執行以下操作:強制硒以暫停並等待字段可用
通過某個ID查找元素。如果失敗,請等待5秒鐘,然後重試。如果它成功繼續與腳本的其餘部分。現在對我來說很容易,這是我第一次真正的嘗試。我試圖嵌套嘗試/除了語句,但它很快就變得非常混亂。
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
import time
import xlrd
workbook = xlrd.open_workbook("my_excel_file.xlsx")
worksheet = workbook.sheet_by_name('Sheet1')
x = 0
for current_row in range(worksheet.nrows):
try:
cmt = worksheet.row(current_row)[2].value
browser = webdriver.Firefox() # Get local session of firefox
browser.get("http://www.somewebsite.com") # Load page
time.sleep(5)
#this timer is the issue, if the field takes 6 seconds to be ready, script fails
comment = browser.find_element_by_id("slow_comment_box") # Find the comment box
comment.send_keys(str(cmt) + Keys.RETURN)
x += 1
except:
print ("Error on " + str(x))
quit()
有沒有一種方法可以設置這種行爲我上面所述的方式?我知道硒等待頁面加載,但文本框是不正常的,似乎有自己的加載,紡車。
總結和解決方案 答案如下。我的愚蠢的東西有一些語法錯誤。 this page was extremely useful as well.
這有幫助嗎? [http://stackoverflow.com/questions/16927354/how-can-i-make-selenium-python-wait-for-the-user-to-login-before-continuing-to-r] – jcfollower
我喜歡這種可能性!會做更多的閱讀並嘗試實施。 – dalearyous