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。上面是我的代码。我想在维基百科中检索这个带圆圈的元素,因为我们可以看到它是一个锚标记<a>
,它位于id为"的<div>
内;文章计数";。我尝试过By.CSS_SELECTOR,但它不起作用,所以我使用XPATH,如代码所示。但它仍然不起作用。
然后我发现,如果我单独打印articles
变量,代码不会引发错误。但是,一旦我打印articles.text
或articles.get_attribute("textContent")
,错误仍然会发生。
如果有人能帮助我就太好了。提前谢谢。
在此处输入图像描述
在此处输入图像描述
您有一个小错误。在这一行中,您在找到元素后单击它,这会导致页面发生更改,并且您找不到文章计数。
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()
,它就会工作