Selenium-通过XPath获取文本

Selenium-通过XPath获取文本,selenium,xpath,Selenium,Xpath,为什么这个XPath找不到文本?当我将它粘贴到开发工具中时,XPath工作正常 from selenium import webdriver from selenium.webdriver.chrome.options import Options import time PATH = "C:\Program Files (x86)\chromedriver.exe" options = webdriver.ChromeOptions() options.add_argum

为什么这个XPath找不到文本?当我将它粘贴到开发工具中时,XPath工作正常

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time

PATH = "C:\Program Files (x86)\chromedriver.exe"
options = webdriver.ChromeOptions()
options.add_argument("disable-infobars")
options.add_argument("--disable-extensions")
options.add_experimental_option( "prefs",{'profile.managed_default_content_settings.javascript': 2})
driver = webdriver.Chrome(PATH,chrome_options=options)

driver.get('https://www.atptour.com/en/tournaments')
time.sleep(5)
name_of_surface = driver.find_element_by_xpath("//*[@id='contentAccordionWrapper']/div[9]/div[2]/table/tbody/tr[5]/td[3]/table/tbody/tr/td[2]/div/div/span")
print(f'Name of surface: {name_of_surface.get_attribute("text")}')

如果要使用xPath,则在
/[@id='contentAccordionWrapper']/div[9]/div[2]/table上有一个错误,因为在div[2]之后,表和这个div之间还有一个div。更好的方法是使用双斜杠
/
。这将确保找到任何子表

//[@id='contentAccordionWrapper']/div[9]/div[2]//table/tbody/tr[5]/td[3]/table/tbody/tr/td[2]/div/div/span'
注意:以上内容将为您提供文本

硬的


让我们知道您正试图定位什么,以便提供更高效的xpath,而不是您使用的长行。

您是否尝试了
name\u of_surface.text
name\u of_surface.get\u attribute(“innerText”)
?您到底想定位什么?我不知道当我将它粘贴到开发工具XPath work中时你们是怎么说的,因为我尝试了,但它甚至在元素中也不匹配。我试图找到“Hard”,你们找不到元素,因为他是隐藏的。你们应该点击八月月份或者在网站上禁用javascript