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

问题描述 投票:0回答:1

我一直在尝试从使用 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")

每当我运行这段代码时, a 就会变成一个空列表。我什至尝试过仅使用元素 h2 的 CSS 选择器,但它仍然返回一个空列表,这很奇怪。

selenium-webdriver web-scraping web webdriver
1个回答
0
投票

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

解决方案: 在这种情况下,您需要切换到

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
© www.soinside.com 2019 - 2024. All rights reserved.