提问人:Skanda Vyas 提问时间:11/16/2023 最后编辑:ShawnSkanda Vyas 更新时间:11/16/2023 访问量:27
驱动程序无法使用 CSS 选择器或 XPATH 查找元素。(Selenium 网页抓取)
Driver is unable to find elements using CSS Selector, or XPATH . (Selenium Web Scraping)
问:
我一直在尝试从使用 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 选择器,它仍然返回一个非常奇怪的空列表。a
h2
答:
0赞
Shawn
11/16/2023
#1
问题的根本原因:所需的元素位于 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
评论