代码之家  ›  专栏  ›  技术社区  ›  jim jarnac

python selenium:无法单击不可见元素

  •  0
  • jim jarnac  · 技术社区  · 6 年前

    我正试图通过以下方式刮取谷歌新闻页面:

    from selenium import webdriver
    import time
    from pprint import pprint
    
    
    base_url = 'https://www.google.com/'
    
    driver = webdriver.Chrome('/home/vincent/wintergreen/chromedriver') ## change here to your location of the chromedriver
    driver.implicitly_wait(30)
    driver.get(base_url)
    
    
    input = driver.find_element_by_id('lst-ib')
    input.send_keys("brexit key dates timetable schedule briefing")
    
    click = driver.find_element_by_name('btnK')
    click.click()
    
    news = driver.find_element_by_link_text('News')
    news.click()
    
    tools = driver.find_element_by_link_text('Tools')
    tools.click()
    
    time.sleep(1)
    
    recent = driver.find_element_by_css_selector('div.hdtb-mn-hd[aria-label=Recent]')
    recent.click()
    
    # custom = driver.find_element_by_link_text('Custom range...')
    custom = driver.find_element_by_css_selector('li#cdr_opt span')
    custom.click()
    
    from_ = driver.find_element_by_css_selector('input#cdr_min')
    from_.send_keys("9/1/2018")
    
    to_ = driver.find_element_by_css_selector('input#cdr_max')
    to_.send_keys("9/2/2018")
    
    time.sleep(1)
    
    go_ = driver.find_element_by_css_selector('form input[type="submit"]')
    print(go_)
    pprint(dir(go_))
    pprint(go_.__dict__)
    go_.click()
    

    此脚本可以输入搜索条件,切换到“新闻”选项卡,打开“自定义时间段”选项卡,填写开始日期和结束日期,但在该点之后未能单击“转到”按钮。

    print pprint selenium.common.exceptions.ElementNotVisibleException: Message: element not visible

    有没有人能快速运行一下Selenium,并给我一些提示,说明它为什么会返回这样的错误?

    谢谢!

    1 回复  |  直到 6 年前
        1
  •  3
  •   mynameisarjay    6 年前

    在chrome中使用开发工具评估css会产生4个元素。

    Click here for the image

    go_ = driver.find_element_by_css_selector('#cdr_frm > input.ksb.mini.cdr_go')