zoukankan      html  css  js  c++  java
  • 爬虫-12.Selenium案例

      Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器)。

    火狐浏览器

    import selenium.webdriver
    import time
    from selenium.webdriver.common.keys import Keys
    
    #定义火狐浏览器参数
    options = selenium.webdriver.FirefoxOptions()
    
    #设置为headless模式(无头浏览器)
    options.add_argument('-headless')
    #禁止硬件加速
    options.add_argument('--disable-gpu')
    
    #调用指定的浏览器创建浏览器对象
    driver = selenium.webdriver.Firefox(firefox_options=options)
    
    #设置浏览器窗口大小
    #driver.set_window_size(1200,1200)
    

    PhantomJS

    #如果没有设置浏览器的环境变量,需要在创建的时候指明
    driver_path = '/Users/yuxiaolong/Downloads/phantomjs/bin/phantomjs'
    driver = selenium.webdriver.PhantomJS(executable_path=driver_path)
    
    driver.get("http://www.douban.com")
    
    #截取屏幕,PhantomJS截取为全屏,相比其他浏览器较好
    driver.save_screenshot('douban.png')
    

    案例一:网站模拟登录

    模拟网站登陆

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    import time
    
    driver = webdriver.PhantomJS()
    driver.get("http://www.douban.com")
    
    # 输入账号密码
    driver.find_element_by_name("form_email").send_keys("xxxx")
    driver.find_element_by_name("form_password").send_keys("xxxx")
    
    # 模拟点击登录
    driver.find_element_by_xpath("//input[@class='bn-submit']").click()
    
    # 等待3秒
    time.sleep(3)
    
    # 生成登陆后快照
    driver.save_screenshot("douban.png")
    
    with open("douban.html", "w") as file:
        file.write(driver.page_source)
    
    driver.quit()
    

    案例二:动态页面模拟点击

    js分页网站,模拟点击
    python测试模块

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    # python的测试模块
    import unittest
    from selenium import webdriver
    from bs4 import BeautifulSoup
    
    
    class douyuSelenium(unittest.TestCase):
        # 初始化方法
        def setUp(self):
            self.driver = webdriver.PhantomJS()
    
        #具体的测试用例方法,一定要以test开头
        def testDouyu(self):
            self.driver.get('http://www.douyu.com/directory/all')
            while True:
                # 指定xml解析
                soup = BeautifulSoup(driver.page_source, 'xml')
                # 返回当前页面所有房间标题列表 和 观众人数列表
                titles = soup.find_all('h3', {'class': 'ellipsis'})
                nums = soup.find_all('span', {'class': 'dy-num fr'})
    
                # 使用zip()函数来可以把列表合并,并创建一个元组对的列表[(1,2), (3,4)]
                for title, num in zip(titles, nums):
                    print u"观众人数:" + num.get_text().strip(), u"	房间标题: " + title.get_text().strip()
                # page_source.find()未找到内容则返回-1
                if driver.page_source.find('shark-pager-disable-next') != -1:
                    break
                # 模拟下一页点击
                self.driver.find_element_by_class_name('shark-pager-next').click()
    
        # 退出时的清理方法
        def tearDown(self):
            print '加载完成...'
            self.driver.quit()
    
    if __name__ == "__main__":
        unittest.main()
    

    案例三:执行 JavaScript 语句

    Ajax加载的网页

    from selenium import webdriver
    import time
    
    driver = webdriver.PhantomJS()
    driver.get("https://movie.douban.com/typerank?type_name=剧情&type=11&interval_id=100:90&action=")
    
    # 向下滚动10000像素
    js = "document.body.scrollTop=10000"
    #js="var q=document.documentElement.scrollTop=10000"
    time.sleep(3)
    
    #查看页面快照
    driver.save_screenshot("douban.png")
    
    # 执行JS语句
    driver.execute_script(js)
    time.sleep(10)
    
    #查看页面快照
    driver.save_screenshot("newdouban.png")
    
    driver.quit()
    
  • 相关阅读:
    页面切换语言包使用session不用cookie
    如何设置unobtrusive的语言包
    .net MVC全球化资源使用心得
    消息队列写入内容后,读出来的自动包裹了<string>标签,自定义格式化器解决该issue
    解决"415 Cannot process the message because the content type 'application/x-www-form-urlencoded' was not the expected type 'text/xml; charset=utf-8'"
    动态sql语句输出参数
    vue数据更改视图不更新问题----深入响应式原理
    实现 页面某些 效果
    自己封装 vue 组件 和 插件
    单页面应用的 打包部署(vue-cli、creat-react-app )
  • 原文地址:https://www.cnblogs.com/shuai-long/p/9726748.html
Copyright © 2011-2022 走看看