即使在使用webdriverwait并切换到选项后也无法找到Element

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

我有一个我需要抓的网站。我无法使用selenium的find_element选项来填写搜索词。我已经尝试使用webdriverwait和iframe的解决方案使用切换到选项但这些不起作用。

链接是'https://www.notredame.edu.au/staff/staff-directory'我使用selenium我还可以使用请求模块吗?我不确定。我也尝试过使用xpath,id和name。

browser = webdriver.Chrome('C:\\Users\\albert.malhotra\\Desktop\\Web Scrapings\\Kentucky State\\chromedriver')
url = 'https://www.notredame.edu.au/staff/staff-directory'
browser.get(url)
time.sleep(10)
WebDriverWait(browser, 20).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"tbSimpleSearchName")))

我应该能够使用send_keys方法输入搜索条件并从那里抓取数据。

python selenium web-scraping
2个回答
0
投票

请尝试以下操作以获得所需的结果。请务必使用任何有效的搜索关键字替换something

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys

URL = "https://www.notredame.edu.au/staff/staff-directory"

driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
driver.get(URL)

wait.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"[name='Staff Directory']")))
wait.until(EC.presence_of_element_located((By.ID, "tbSimpleSearchName"))).send_keys("something",Keys.RETURN)

0
投票

您正在尝试等待IFrame中的元素。

您需要等待IFrame本身,切换到它,然后您可以选择IFrame内部的元素。

WebDriverWait(browser, 20).until(EC.frame_to_be_available_and_switch_to_it((By.Name,"Staff Directory")))

(我没有测试过上面的代码,我认为By.Name不是正确的选择器,但希望能给你这个想法。

© www.soinside.com 2019 - 2024. All rights reserved.