直接从 chrome 复制 xpath,但不工作

Copied xpath directly from chrome, and not working

试图从fanduel中刮赔率,目标是获得玩家的名字。在这种情况下杰森·塔图姆。

https://sportsbook.fanduel.com/basketball/nba/philadelphia-76ers-@-boston-celtics-31137202?tab=player-points

即使我直接从 chrome 复制 xpath,它似​​乎也不起作用。虽然它在我硬编码并通过包含文本 Jayson Tatum 的 xpath 查找元素时有效。 这是我的代码

name = WebDriverWait(driver, 20).until(
                    EC.presence_of_element_located((By.XPATH,'//*[@id="root"]/div/div[2]/div[1]/div/div[2]/div[3]/div/div[2]/div/div[3]/div[1]/div/div/div[1]/span')))

也试过这个

name = driver.find_element(By.XPATH, '//*[@id="root"]/div/div[2]/div[1]/div/div[2]/div[3]/div/div[2]/div/div[3]/div[1]/div/div/div[1]/span')

尝试两种方法仍然得到一个 NoSuchElement。

要打印文本 Jayson Tatum 您可以使用以下 :

  • 使用 xpathtext 属性:

    print(driver.find_element(By.XPATH, "//span[text()='UNDER']//following::div[1]//span").text)
    

理想情况下你需要诱导 for the and you can use either of the following :

  • 使用 XPATHget_attribute("innerHTML"):

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//span[text()='UNDER']//following::div[1]//span"))).get_attribute("innerHTML"))
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

You can find a relevant discussion in


参考资料

Link 到有用的文档:

  • get_attribute()方法Gets the given attribute or property of the element.
  • text属性returnsThe text of the element.
  • Difference between text and innerHTML using Selenium