我目前正在玩 Selenium 試圖通過實踐來學習它并遇到了這個問題;網站上偶爾會出現一個帶有不同 XPATH 的按鈕,所以我想嘗試創建一個解決方法。這就是我想要使用的:
if bool(wd.find_element_by_xpath('//*[@id="basketPageApp"]/div/div[2]/div/div/div[1]/div/div[2]/a')) == TRUE:
button = wd.find_element_by_xpath('//*[@id="basketPageApp"]/div/div[2]/div/div/div[1]/div/div[2]/a')
else:
button = wd.find_element_by_xpath('//*[@id="guestCheckout"]/div/div/div[2]/section/div[2]/div[1]/div')
我確定我不能以這種方式使用 if 陳述句,但我希望這能理解我想要實作的目標。
uj5u.com熱心網友回復:
find_element如果方法找不到與傳遞的定位器匹配的元素,Selenium 將拋出例外。
它不會回傳布林值True或False.
你可以在這里做的是使用find_elements_by_xpath而不是find_element_by_xpath因為find_elements_by_xpath將回傳你找到的匹配串列。因此,如果有匹配項,您將得到一個由 Python 解釋為 Boolean 的非空串列,True而如果找不到匹配項,它將回傳一個由 Python 解釋為 Boolean 的空串列False。此外,這永遠不會拋出例外。
所以你的代碼可能是這樣的:
if wd.find_elements_by_xpath('//*[@id="basketPageApp"]/div/div[2]/div/div/div[1]/div/div[2]/a'):
button = wd.find_element_by_xpath('//*[@id="basketPageApp"]/div/div[2]/div/div/div[1]/div/div[2]/a')
else:
button = wd.find_element_by_xpath('//*[@id="guestCheckout"]/div/div/div[2]/section/div[2]/div[1]/div')
uj5u.com熱心網友回復:
您可以使用 try and except
try:
button = wd.find_element_by_xpath('//*[@id="basketPageApp"]/div/div[2]/div/div/div[1]/div/div[2]/a')
except:
button = wd.find_element_by_xpath('//*[@id="guestCheckout"]/div/div/div[2]/section/div[2]/div[1]/div')
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/417731.html
標籤:
