我在使用 Python 的 Selenium 的網站上有這個串列。

單擊一個專案會打開一個子串列,您可以在其中單擊多個按鈕。我使用 JavaScript 單擊這些按鈕,這樣子串列就永遠不會打開。這種方法更快。
...
driver.execute_script(button)
我的問題是我應該使用哪個 expected_conditions 來等待按鈕出現在 DOM 中,以便我可以使用 JavaScript 選擇它?
expected_conditions.element_to_be_clickable(我一直使用的)不是正確的答案。
uj5u.com熱心網友回復:
由于您沒有擴展不可見的專案和子串列,因此您在多個按鈕上呼叫click() , WebDriverWait for visibility_of_element_located()和element_to_be_clickable()將始終失敗。
解決方案
在這種情況下,您最好的選擇是為present_of_element_located ()誘導WebDriverWait,如下所示:
element = WebDriverWait(driver, 20).until(expected_conditions.presence_of_element_located((By.XPATH, "element_xpath']")))
driver.execute_script(""arguments[0].click();", element)
在一行中:
driver.execute_script(""arguments[0].click();", WebDriverWait(driver, 20).until(expected_conditions.presence_of_element_located((By.XPATH, "element_xpath']"))))
另一個基于JavaScript的替代方案是:
driver.execute_script("document.getElementsByClassName('theClassName')[0].click()")
uj5u.com熱心網友回復:
如果您使用 JavaScript 來單擊這些元素,則無需等待這些元素的可點擊性或可見性,在這種情況下,存在就足夠了。所以,你可以presence_of_element_located在這里使用方法。
我建議永遠不要使用 JavaScript 單擊 Selenium,除非你別無選擇,因為 Selenium 正在模擬人類 GUI 活動,在 99.9% 的情況下可能而且應該使用 selenium.click()方法完成。如果您無法使用此方法執行此操作,則通常意味著人類將無法通過 GUI 執行此操作,因此這通常不是我們想要使用 Selenium 測驗 GUI 功能的方式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/438450.html
