1

以下代碼使用css選擇器提取元素,它在ipython3終端中工作,但在腳本中運行時找不到元素:當以腳本運行時,selenium css選擇器或複雜類的xpath不起作用

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')]") 

回答

0

這可能是一個時機的問題:必需的元素,可以動態生成的,所以你需要等待一段時間,直到它出現在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

0

如果使用硒css選擇器找不到任何元素,那麼您是否總是嘗試使用xpath而不是css選擇器。

關於這方面的更多信息可以在here找到。

+0

XPath也沒有工作。對不起,我會在終端中更新 – mrbot

0

通行證只是局部的類名一樣,

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

作品,但不能在腳本中運行。 – mrbot

+0

等待找到元素。 –