PhantomJS不会跳到Python Selenium的下一页

时间:2017-05-09 01:45:15

标签: python selenium phantomjs

    # -*- coding: utf-8 -*
    import scrapy
    import os
    from selenium import webdriver
    import time


    def get_path():
        path = os.path.abspath(
            os.path.join(
                os.path.dirname(
                    os.path.abspath(__file__)),
                os.path.pardir))
        return os.path.join(
            path, 'tool/phantomjs-2.1.1-linux-x86_64/bin/phantomjs')

    browser = webdriver.PhantomJS(get_path())
    browser.get('http://www.chinaccm.com/37/372002list.shtml')
    elem = browser.find_element_by_id('keyword')
    elem.clear()
    time.sleep(1)
    elem.send_keys('针叶浆'.decode('utf-8'))
    browser.find_element_by_xpath(
        '//div[@class="search0013"]').click()
    time.sleep(1)
    print('----------------------{}'.format(browser.current_url))

输出是---------------------- http://www.chinaccm.com/37/372002list.shtml

点击似乎不起作用 但是当我使用chromedriver时,它可以正常工作

    # -*- coding: utf-8 -*
    import scrapy
    import os
    from selenium import webdriver
    import time


    def get_path():
        path = os.path.abspath(
            os.path.join(
                os.path.dirname(
                    os.path.abspath(__file__)),
                os.path.pardir))
        return os.path.join(
            path, 'tool/chromedriver')

    browser = webdriver.Chrome(get_path())
    browser.get('http://www.chinaccm.com/37/372002list.shtml')
    elem = browser.find_element_by_id('keyword')
    elem.clear()
    time.sleep(1)
    elem.send_keys('针叶浆'.decode('utf-8'))
    browser.find_element_by_xpath(
        '//div[@class="search0013"]').click()
    time.sleep(1)
    print('----------------------{}'.format(browser.current_url))

输出是 ---------------------- http://www.chinaccm.com/WebInfoList.aspx?start_date=2016-5-9&end_date=2017-5-9&keyword=%E9%92%88%E5%8F%B6%E6%B5%86&Column=372002

1 个答案:

答案 0 :(得分:0)

将您的xpath更改为'//div[@class="search0013"]

Chrome和PhantomJS并不总是以同样的方式处理事情。使用{{1}},您选择包含与Chrome配合使用的按钮的div元素,因为点击会发送到按钮所在的位置。 PhantomJS可能是在div中的其他地方发送点击并错过了按钮。