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 你的代码。也许我们可以一起想办法。
例如我有这个网站: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 你的代码。也许我们可以一起想办法。