Selenium select 元素不直接在 python 的页面源中

Selenium select element which isnt directly in the page source in python

例如我有这个网站:https://skinport.com/item/stattrak-usp-s-black-lotus-minimal-wear/6128018 并且想获得该商品的当前价格。 Selenium 无法通过 class 名称、XPath 或 css 选择器找到元素。我认为那只是因为页面源没有价格。该站点包含一些打印当前价格的脚本

所以我在 python 中有这样的东西:

driver.get("https://skinport.com/item/stattrak-usp-s-black-lotus-field-tested/6196388")
print(price = driver.find_element(By.XPATH, '//*[@id="content"]/div[1]/div[2]/div/div/div[2]/div[1]/div'))

我收到此错误:selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素

print(driver.find_elements(By.CSS_SELECTOR("#content > div.ItemPage > div.ItemPage-column.ItemPage-column--right > div:nth-child(1) > div > div.ItemPage-price > div.ItemPage-value > div")))

我收到此错误:类型错误:'str' 对象不可调用

您稍等片刻。
您应该在访问该元素之前让页面加载。
这样做的首选方法是使用预期条件显式等待。
此外,您还缺少从 Web 元素检索文本的 text 方法。
还有,你的定位器不好。
这样的事情应该有效:

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

driver.get("https://skinport.com/item/stattrak-usp-s-black-lotus-field-tested/6196388")
wait = WebDriverWait(driver, 20)
price = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.ItemPage-price div.Tooltip-link"))).text
print(price)

我的客人是,您没有添加 implicit/explicit 等待您的驱动程序会话。你的 xpath 似乎工作。 Post 你的代码。也许我们可以一起想办法。

文档的link https://selenium-python.readthedocs.io/waits.html