【问题标题】:Selenium Unable to locate element (Python) WebScrapingSelenium 无法定位元素(Python)网页抓取
【发布时间】:2015-12-14 16:25:18
【问题描述】:

我正在尝试在房地产网站上搜索列表。它有一个必须在提交前填写的 aspx 表单。

http://www.cbre.us/PropertyListings/Pages/Properties-for-Sale.aspx

不过,我只关心俄勒冈州的多户住宅。所以这是我的第一次尝试:

driver = webdriver.Firefox()

driver.get("http://www.cbre.us/PropertyListings/Pages/Properties-for-Sale.aspx")

#Searching for multifamily residences
selectPropertyType = driver.find_element_by_id("ForSalePropertyType")
selectPropertyType.select_by_value("70")

#In the state of Oregon
selectState = driver.find_element_by_id("ForSaleState_ListBox1")
selectState.select_by_value("OR")

#Submit form
submitBtn = driver.find_element_by_id("ForSaleLooplinkSubmit")
submitBtn.click()

#Wait for results to load
WebDriverWait(driver, 5)

当我运行此脚本时,它会给出错误“无法找到元素“ForSalePropertyType”。我在这里做错了什么?提前致谢。

【问题讨论】:

    标签: python selenium selenium-webdriver web-scraping


    【解决方案1】:

    此元素位于iframe 内。你必须切换到它的上下文:

    driver.switch_to.frame("ctl00_PlaceHolderMain_IFrameContent_IFrameContent")
    
    # searching for multifamily residences
    selectPropertyType = driver.find_element_by_id("ForSalePropertyType")
    selectPropertyType.select_by_value("70")
    

    返回默认上下文:

    driver.switch_to.default_content()
    

    附带说明,请注意Disclaimer / Terms of use 中列出的政策,特别是:

    您同意您不会:(a) 冒充任何人或实体或 歪曲您与任何其他人或实体的关系; (b) 从事垃圾邮件、泛滥、收集电子邮件地址或其他 个人信息,蜘蛛,屏幕抓取,数据库抓取, 或以获取用户列表为目的的任何其他活动,或 任何其他信息,具体包括房产清单 可通过网站获得; (c) 发送连锁信或传销 通过网站; (d) 试图未经授权访问其他 通过网站的计算机系统。您同意不会使用 以任何可能损坏、禁用、负担过重或损害的方式 网站或干扰任何其他方的使用和享受 网站。

    【讨论】:

    猜你喜欢
    • 2020-06-21
    • 1970-01-01
    • 2022-01-19
    • 2019-03-25
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多