我正在嘗試使用 python/selenium 訪問主頁、登錄、單擊登錄按鈕并單擊一個按鈕(在第二頁中)。
我使用 Xpath 撰寫的登錄按鈕,它運行良好。瀏覽器打開,寫入用戶和登錄名,然后單擊登錄按鈕。
不幸的是,在下一頁我無法點擊我需要的按鈕。使用 Xpath 不起作用,我不明白為什么。html 與第一個按鈕完全不同,按鈕名稱是“Reservar”,它位于一個名為 <app-menu__menu> 的類中,寫為:
<a href="/Services" id="advanced" class="element ">
<span>Reservar</span>
</a>
我得到并嘗試過的xpath:
xpath = "//*[@id="advanced"]"
然后我嘗試了第二個版本(它是作為第二行代碼 xpath 獲得的):
xpath = "//*[@id="advanced"]/span"
當我第一次嘗試使用它們時,我得到了一個錯誤。然后我將“”更改為“”,錯誤消失了。但是程式找不到按鈕。
我正在使用 google-chrome、ubuntu、python3 和 selenium 包:
driver.find_element_by_xpath(xpath).click()
謝謝你的幫助。
uj5u.com熱心網友回復:
您可能錯過了延遲/等待。
單擊登錄頁面上的提交/登錄按鈕后,需要一些時間來加載內部頁面。
推薦的方法是使用預期條件顯式等待,如下所示:
wait.until(EC.visibility_of_element_located((By.XPATH, "//*[@id='advanced']"))).click()
要在此處使用該wait物件,您需要匯入以下輸入埠:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
并用初始化wait物件
wait = WebDriverWait(driver, 20)
您必須驗證您的定位器是唯一的。除了驗證您嘗試訪問的元素不在 iframe 內,也不在新視窗/選項卡等中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/425234.html
