我需要在頁面上找到一個部分鏈接按鈕并點擊它。但它給了我一個錯誤。
代碼:
button = browser.find_element(by=By.PARTIAL_LINK_TEXT('/watch')).click()
關聯
錯誤:
button = browser.find_element(by=By.PARTIAL_LINK_TEXT('/watch')).click()
TypeError: 'str' object is not callable
uj5u.com熱心網友回復:
這里有2個問題:
- 代替
browser.find_element(by=By.PARTIAL_LINK_TEXT('/watch'))
它應該是
browser.find_element(By.PARTIAL_LINK_TEXT('/watch'))
- 如果您想在同一行上單擊該元素,則不應嘗試將結果放入
button物件。因為browser.find_element(By.PARTIAL_LINK_TEXT('/watch'))回傳一個 web 元素的物件,所以你可以用.click()方法點擊它。然而,.click()方法本身回傳void,即什么都沒有。所以你的代碼可以是
browser.find_element(By.PARTIAL_LINK_TEXT('/watch')).click()
或者
button = browser.find_element(By.PARTIAL_LINK_TEXT('/watch'))
button.click()
uj5u.com熱心網友回復:
這是錯誤的方法
button = browser.find_element(by=By.PARTIAL_LINK_TEXT('/watch')).click()
你應該使用這個:
button = browser.find_element(By.PARTIAL_LINK_TEXT, "/watch")
button.click()
另外,如果您看到方法簽名是
def find_element(self, by=By.ID, value=None):
預計通過By 然后將其與實際定位器分開。
另外,我建議在這個用例中使用 WebDriverWait (ExplicitWait)。
button = WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, "/watch")))
button.click()
您還必須匯入這些。
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
uj5u.com熱心網友回復:
你已經足夠接近了。實際的實作是:
self.find_element(by=By.PARTIAL_LINK_TEXT, value=link_text)
所以你需要傳遞兩個引數,
該
byparameter`:By.PARTIAL_LINK_TEXTvalue引號內的引數:"/watch"
所以你的有效代碼行將是:
browser.find_element(By.PARTIAL_LINK_TEXT, "/watch")
最后,click()不回傳任何內容,因此如果嘗試將其分配給變數,它將始終為NULL. 所以最好放棄它。
所以你的作業代碼行將是:
browser.find_element(By.PARTIAL_LINK_TEXT, "/watch").clcik()
理想的情況下呼叫click()需要引起WebDriverWait的element_to_be_clickable(),你可以使用以下的定位策略:
WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, "/watch"))).click()
注意:您必須添加以下匯入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/362314.html
上一篇:我收到錯誤-**ThemethodgetAttribute(String)isundefinedforthetypeObject**,如何解決這個錯誤?
