from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
chrome_driver_path = "/Users/greta/Development/chromedriver"
driver = webdriver.Chrome(executable_path=chrome_driver_path)
driver.get("https://en.wikipedia.org/wiki/Main_Page")
articles = driver.find_element(By.XPATH, "/html/body/div[3]/div[3]/div[5]/div[1]/div[1]/div/div[3]/a[1]")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[3]/div[3]/div[5]/div[1]/div[1]/div/div[3]/a[1]"))).click()
try:
number_of_articles = articles.get_attribute("textContent")
print(number_of_articles)
except:
print("Unable to find")
finally:
driver.quit()
我正在用 Python 學習 Selenium。以上是我的代碼。我想在 Wikipedia 中檢索這個帶圓圈的元素,因為我們可以看到它是一個位于 id 為“articlecount”的錨<a>標記<div>。我已經嘗試過不起作用的 By.CSS_SELECTOR,所以我使用 XPATH 代替,如代碼所示。但它仍然不起作用。
然后我發現如果我articles單獨列印變數,代碼不會引發錯誤。但是,只要我列印articles.textor articles.get_attribute("textContent"),錯誤仍然會發生。
如果有人可以幫我一把,那就太好了。提前致謝。
在此處輸入影像描述
在此處輸入影像描述
uj5u.com熱心網友回復:
你有一個小錯誤。在這一行中,您在找到該元素后單擊它,這會導致頁面發生變化并且您無法找到文章計數。
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[3]/div[3]/div[5]/div[1]/div[1]/div/div[3]/a[1]"))).click()
只需洗掉click()它就可以了
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/459656.html
