我正在嘗試使用硒單擊按鈕。我的代碼指出它無法找到css_selector具有所述類名的。類名中有空格,這導致我使用該css_selector物件。當我嘗試在“css_selector”物件中傳遞類名時,它失敗了,因為類名是一個字串,它是不可呼叫的。該網站受密碼保護,否則我將分享完整代碼。這就是我到目前為止所擁有的。
# Button I wish to click
<a href="#" class="btn btn-alt see-full-list-btn">See Full List</a>
# Once button is clicked, it changes to:
<a href="#" class="btn btn-alt see-full-list-btn" style="display: none;">See Full List</a>
我試過的:
driver.find_element(By.CSS_SELECTOR("btn btn-alt see-full-list-btn")) # str object not callable
driver.find_element(By.CSS_SELECTOR,"btn btn-alt see-full-list-btn")
# Message: no such element: Unable to locate element: {"method":"css selector","selector":"btn btn-alt see-full-list-btn"}
uj5u.com熱心網友回復:
正如你提到的
The class name has spaces in it, which lead me to use the css_selector
這是正確的方法,但是您還應該確保一個
- 應該洗掉空間并放置一個
. .表示 CSS 中的類。
所以下面的代碼應該可以作業:
driver.find_element(By.CSS_SELECTOR, ".btn.btn-alt.see-full-list-btn")
或者你甚至可以將它與標簽一起使用a
driver.find_element(By.CSS_SELECTOR, "a.btn.btn-alt.see-full-list-btn")
或者推薦的解決方案是使用顯式等待:
see_full_list_button = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "a.btn.btn-alt.see-full-list-btn")))
see_full_list_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熱心網友回復:
在點擊被呼叫后,沒有必要關注元素 HTML。
根據 HTML
<a href="#" class="btn btn-alt see-full-list-btn">See Full List</a>
您可以使用以下任一定位器策略:
使用link_text:
driver.find_element(By.LINK_TEXT, "See Full List").click()使用css_selector:
driver.find_element(By.CSS_SELECTOR, "a.btn.btn-alt.see-full-list-btn").click()使用xpath:
driver.find_element(By.XPATH, "//a[@class='btn btn-alt see-full-list-btn' and text()='See Full List']").click()
理想情況下,要單擊可點擊元素,您需要為element_to_be_clickable()誘導WebDriverWait,您可以使用以下任一定位器策略:
使用LINK_TEXT:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "See Full List"))).click()使用CSS_SELECTOR:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.btn.btn-alt.see-full-list-btn"))).click()使用XPATH:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='btn btn-alt see-full-list-btn' and text()='See Full List']"))).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/caozuo/455936.html
