美文网首页UI 自动化
Selenium 3 + Python 3 Demo

Selenium 3 + Python 3 Demo

作者: DC_ing | 来源:发表于2018-04-20 23:09 被阅读0次

    Selenium 3 + Python 3 Demo

    新公司要求使用 python,并且有计划往 Web 自动化方向走,所以最近在学习 Python 和 Selenium。本篇文章先跟大家来个简单的demo,其他 Selenium 的坑,留待以后的新增加的文章。

    环境搭建这一步就跳过了,百度一大把这样的教程。这篇文章主要是对每个主流的浏览器进行 Selenium 的 Demo 例子运行。
    PS:由于目前使用 macOS 系统,Windows 的 IE 和 EDGE 浏览器先放一放,等我用 windows 机器试验后,再补充。

    Chrome

    我们最常用的浏览器,这也是最简单的例子。

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    from selenium import webdriver
    
    driver = webdriver.Chrome(executable_path = 'path/to/chromedriver')
    # 也可以写成这样(不要 [executable_path=])
    # driver = webdriver.Chrome('path/to/chromedriver')
    
    driver.get('https://www.baidu.com')
    assert '百度一下' in driver.title;
    driver.quit()
    

    FireFox

    这也是比较多人使用的浏览器,也是对自动化支持很好的

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    from selenium import webdriver
    
    # Firefox函数的参数一定要加[],不然会报“NotADirectoryError: [Errno 20] Not a directory:”错误
    driver = webdriver.Firefox(executable_path = 'path/to/geckodriver')
    # firefox 的驱动程序名字是 geckodriver
    
    driver.get('https://www.baidu.com')
    assert '百度一下' in driver.title;
    driver.quit()
    

    Opera

    这个比较小众的浏览器,不过还是有 driver 驱动自动化的,与 Firefox 一致的

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    from selenium import webdriver
    
    # Opera函数的参数一定要加[],不然会报“NotADirectoryError: [Errno 20] Not a directory:”错误
    driver = webdriver.Opera(executable_path = 'path/to/operadriver')
    # Opera 的驱动程序名字是 operadriver
    
    driver.get('https://www.baidu.com')
    assert '百度一下' in driver.title;
    driver.quit()
    

    Safari

    这个是 Mac 的浏览器,也有一定的用户人群,做浏览器兼容测试,也是需要这个浏览器。在macOS 10.13使用 Selenium 3.11.0打开 Safari 浏览器比较麻烦。如果简单使用webdriver.Safari(),会报错

    AttributeError: 'WebDriver' object has no attribute 'service'
    

    网上的方法都试过了,没办法解决这个问题。后台我自己根据错误提示的service提示,下载了 selenium-server-standalone,并开启服务,再运行也是报错。最后还是网上找到一些借鉴的方法,不直接使用Safari(),直接使用Remote()方法,加上desired_capabilities=DesiredCapabilities.SAFARI参数,才能使 Safari 正常启动运行测试。

    最新消息,这个官方一个 bug 引起的问题,等待下一个 release 版本修复吧

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import time
    from selenium import webdriver
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    
    driver = webdriver.Remote(desired_capabilities=DesiredCapabilities.SAFARI)
    # 还要开启selenium-server 才能正常启动 Safari 浏览器
    
    driver.get('https://www.baidu.com')
    assert '百度一下' in driver.title
    time.sleep(3)
    driver.quit()
    

    下面附上selenium-server-standalone安装及使用方法

    brew install selenium-server-standalone     # 安装命令
    selenium-server -port 4444          # 启动 selenium 服务命令,并指定4444端口
    
    

    以上是手动开启 selenium 服务启动 Safari。以下方法适用于3.11.0以后的版本(不包含3.11.0)

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import time
    from selenium import webdriver
    
    driver = webdriver.Safari()
    driver.get('https://www.baidu.com')
    assert '百度一下' in driver.title
    time.sleep(3)
    driver.quit()
    

    相关文章

      网友评论

        本文标题:Selenium 3 + Python 3 Demo

        本文链接:https://www.haomeiwen.com/subject/irhtlftx.html