Selenium在使用python和web驱动程序时无法获取element.text


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.textarticles.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(),它就会工作