为了账号安全,请及时绑定邮箱和手机立即绑定

无法使用selenium(python)找到元素

无法使用selenium(python)找到元素

动漫人物 2023-08-08 15:08:38
因此,我尝试查看网站中的 iframe,但无法弄清楚该元素属于何处。我试图通过类名访问元素。下面是我的代码,这是网站。from requests import getfrom bs4 import BeautifulSoupfrom selenium.webdriver import Chromefrom selenium.webdriver.chrome.options import Optionsfrom selenium import webdriverbrowser = webdriver.Chrome(executable_path= '/Users/abeelcf/Downloads/chromedriver')browser.get('https://www.redfin.com')zipcode = input("Enter a zip code to look up: ")search_form = browser.find_element_by_id('search-box-input')search_form.send_keys(zipcode)search_form.submit()#pg 2browser.find_element_by_id("MapHomeCard_0")网址是https://www.redfin.com/zipcode/20007问题出在最后一行。它找不到元素 MapHomeCard_0 ,说该元素没有这样的元素。
查看完整描述

2 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

在 search_box 提交后,您需要使用网络驱动程序等待等待页面加载。


WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'MapHomeCard_0')))

还导入以下内容


from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait 

from selenium.webdriver.support import expected_conditions as EC


查看完整回答
反对 回复 2023-08-08
?
ITMISS

TA贡献1871条经验 获得超8个赞

要定位您需要引发WebDriverWait 的元素visibility_of_element_located(),您可以使用以下任一定位器策略:


使用XPATH:


driver.get('https://www.redfin.com')

search_form = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='search-input-box' and @id='search-box-input'][@title='City, Address, School, Agent, ZIP']")))

search_form.send_keys("20007")

search_form.submit()

print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='homecards']/div[@id='MapHomeCard_0']"))).text)

使用CSS_SELECTOR:


print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.homecards>div#MapHomeCard_0"))).text)

控制台输出:


LISTED BY REDFIN

3D WALKTHROUGH

$464,000

1 Bed

1 Bath

1,014 Sq. Ft.

2500 Q St NW #412, Washington, DC 20007

注意:您必须添加以下导入:


from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.common.by import By

from selenium.webdriver.support import expected_conditions as EC


查看完整回答
反对 回复 2023-08-08
  • 2 回答
  • 0 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信