驱动程序无法使用 CSS 选择器或 XPATH 查找元素。(Selenium 网页抓取)

Driver is unable to find elements using CSS Selector, or XPATH . (Selenium Web Scraping)

提问人:Skanda Vyas 提问时间:11/16/2023 最后编辑:ShawnSkanda Vyas 更新时间:11/16/2023 访问量:27

问:

我一直在尝试从使用 iCIMS 运行的网站中抓取数据,但是每当我尝试使用非常基本的 CSS 选择器或 XPATHS 时,程序都无法找到它。 这是我的代码:

import time
driver = webdriver.Chrome(options=chrome_options,service=service)
driver.get("https://careers-omrf.icims.com/jobs/search?hashed=-625950327&mobile=false&width=1359&height=500&bga=true&needsRedirect=false&jan1offset=-360&jun1offset=-300")
time.sleep(10)
a = driver.find_elements(By.CSS_SELECTOR,"a.iCIMS_Anchor")

每当我运行这个代码块时,都会变成一个空列表。我什至尝试使用仅元素的 CSS 选择器,它仍然返回一个非常奇怪的空列表。ah2

python selenium-webdriver web-scraping web webdriver

评论


答:

0赞 Shawn 11/16/2023 #1

问题的根本原因:所需的元素位于 IFRAME 内(请参阅下面的屏幕截图)。

enter image description here

溶液:在这种情况下,您需要切换到上下文,然后执行所需的操作。检查下面的代码并附上说明:IFRAME

driver.get("https://careers-omrf.icims.com/jobs/search?hashed=-625950327&mobile=false&width=1359&height=500&bga=true&needsRedirect=false&jan1offset=-360&jun1offset=-300")
driver.maximize_window()
wait = WebDriverWait(driver, 10)

# Below like will switch into the context of IFRAME
wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID, "icims_content_iframe")))

# Store desired elements into variable a
a = wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "a.iCIMS_Anchor")))

# Print length of a
print(len(a))

# Below line is to come out of IFRAME
driver.switch_to.default_content()

所需进口:

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

控制台输出:

20

Process finished with exit code 0