Selenium CSS 选择器或复杂类的 XPath 在作为脚本运行时不起作用



以下代码(使用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')]")

这可能是一个计时问题:可以动态生成所需的元素,因此您需要等待一些时间,直到出现在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')]")))

也可以动态分配一些类名称。这就是为什么如果没有ExplicitWait

,将复合名称作为"search-result search-result__occluded-item ember-view"可能无法正常工作。

如果找不到硒CSS选择器的任何元素,那么您可以始终尝试使用XPATH而不是CSS选择器。

有关此信息的更多信息,请参见此处。

仅通过部分类名称,例如

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

最新更新