繁体   English   中英

当作为脚本运行时,复杂类的selenium css选择器或xpath不起作用

[英]selenium css selector or xpath for complex class doesn't work when run as script

以下代码使用css选择器提取元素,在ipython3终端中工作,但在作为脚本运行时找不到元素:

from selenium import webdriver 
driver = webdriver.Chrome()

url = scrape_url + "&keywords=" + keyword
driver.get(url)
driver.find_elements_by_css_selector(".search-result.search-result__occluded-item.ember-view")

元素的复杂类:

"search-result search-result__occluded-item ember-view"

以下xpath在终端中工作,但不是作为脚本:

driver.find_elements_by_xpath("//li[contains(@class, 'search-result search-result__occluded-item')]")

如果你找不到selenium css选择器的任何元素,那么你总是可以尝试使用xpath而不是css选择器。

有关这方面的更多信息,请点击此处

只传递部分类名,如,

driver.find_elements_by_css_selector(".search-result__occluded-item")

这可能是一个时间问题:必需的元素可以动态生成,因此您需要等待一段时间,直到它出现在DOM

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver 
driver = webdriver.Chrome()

url = scrape_url + "&keywords=" + keyword
driver.get(url)
wait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//li[contains(@class, 'search-result search-result__occluded-item')]")))

还可以动态分配一些类名。 这就是为什么使用复合名称作为"search-result search-result__occluded-item ember-view"可能无法使用ExplicitWait

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM