雖然我的 python selenium 代碼運行良好,但我確定了其中的幾個部分,我正在等待單擊位于 XPATH 的專案,因此嘗試定義一個函式來執行此操作,如下所示:
def click_xpath(browser, xpath_string: str):
""" locates a button by XPATH
and clicks on it
"""
WebDriverWait(browser, 10).until(
EC.element_to_be_clickable((By.XPATH, xpath_string))
).click()
return browser
并按如下方式呼叫它:
driver = click_xpath(driver, "/html/body/div[5]/div[3]/div/button")
但是接下來的指令:
find_textbox = driver.find_element_by_id("search")
失敗并顯示以下內容:
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
我嘗試通過呼叫我的函式來替換的先前作業代碼是:
WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH, "/html/body/div[5]/div[3]/div/button"))
).click()
效果很好,驅動程式的后續使用正常進行。
我在看什么?謝謝
PS假設這可以做到,我應該為我的函式的回傳物件使用什么型別?
uj5u.com熱心網友回復:
我想這里的問題如下:
當您在等待元素可單擊后單擊該元素時,click_xpath它可以正常作業,但是當您嘗試立即單擊它時
find_textbox = driver.find_element_by_id("search")
由于您試圖過早地單擊該元素,因此您收到了錯誤訊息。
所以,你只是錯過了那里的延遲。
嘗試從
find_textbox = driver.find_element_by_id("search")
到
find_textbox = WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.ID, search)))
我認為這將解決您的問題
uj5u.com熱心網友回復:
我認為
.click
應該
.click()
此外,無需從此方法回傳驅動程式/瀏覽器 click_xpath
因為它說只需單擊 XPath 節點,對嗎?
另外,)這里缺少a
driver = click_xpath(driver, "/html/body/div[5]/div[3]/div/button"
我會使用這樣的東西:
def click_xpath(browser, xpath_string):
WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.XPATH, xpath_string))).click()
print('Clicked on the', xpath_string, ' node')
somenode = click_xpath(driver, "/html/body/div[5]/div[3]/div/button")
你問的第二個問題是什么
我的函式的回傳物件應該使用什么型別的后綴?
.click() 方法回傳 void,因此如果您在 Web 元素上使用它,則無需回傳任何內容。但是,如果您在回傳時非常膝蓋,您可以執行以下操作。
另外,請注意,WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.XPATH, xpath_string)))如果找到,將回傳一個 Web 元素。
代碼:
def click_xpath(browser, xpath_string):
web_element = WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.XPATH, xpath_string)))
print('Clicked on the', xpath_string, ' node')
return web_element
somenode = click_xpath(driver, "/html/body/div[5]/div[3]/div/button")
somenode.click()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/421979.html
標籤:
上一篇:重試Selenium點擊
