51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1770|回复: 0
打印 上一主题 下一主题

selenium3.x 踏坑记

[复制链接]
  • TA的每日心情
    无聊
    昨天 09:06
  • 签到天数: 530 天

    连续签到: 2 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2018-12-18 15:38:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    有好长一段时间没有用selenium了。最近想用来做个web自动化的小工具。根据以往经验,firefox是不需要下载driver的。启动firefox. 立即抛出一个异常。
    1. selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH
    复制代码

    搜索得知:
    1. selenium 3.x开始,webdriver/firefox/webdriver.py的init中,executable_path=”geckodriver”;而2.x是executable_path=”wires”
    2. firefox 47以上版本,需要下载第三方driver

    有没搞错,firefox也需要装driver了!

    windows
    下载解压后将getckodriver.exe复制到Firefox的安装目录下,
    设置path,或者:
    1. from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
    2. driver = webdriver.Firefox(executable_path="C:\Program Files (x86)\Mozilla Firefox\geckodriver.exe")
    复制代码

    mac:
    可以用: brew install geckodriver
    或者下载
    把解压缩后的文件放到/usr/local/bin里面
    1. from selenium import webdriverfrom selenium.webdriver.firefox.firefox_binary import FirefoxBinary
    2. binary = FirefoxBinary('/Applications/Firefox.app/Contents/MacOS/firefox-bin')
    3. browser = webdriver.Firefox(firefox_binary=binary)
    复制代码

    Chrome就不用说了,直接下载一个driver, 一般直接放在python的路径下,找起来方便。

    有的时候,加载图片,CSS等很慢,其实我们并不需要都加载完全,可以禁止掉
    那么代码可以写成这样。

    1. from selenium import webdriver
    2. import site
    3. from selenium.webdriver.chrome.options import Options
    4. from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
    5. def get_python_location(self):
    6.         return site.getsitepackages()[0]

    7.     def get_driver(self):
    8.         if os.path.exists(os.path.join(self.get_python_location(), 'chromedriver.exe')):
    9.             chrome_options = Options()
    10.             chrome_options.add_experimental_option("prefs", {'profile.manage_default_content_settings.images': 2})
    11.             driver = webdriver.Chrome(os.path.join(self.get_python_location(), 'chromedriver.exe'), chrome_options=chrome_options)
    12.         else:
    13.             firefoxProfile = FirefoxProfile()
    14.             firefoxProfile.set_preference('permissions.default.stylesheet', 2)
    15.             firefoxProfile.set_preference('dom.ipc.plugins.enabled.libflashplayer.so', 'false')
    16.             firefoxProfile.set_preference('permissions.default.image', 2)
    17.             driver = webdriver.Firefox(firefoxProfile,executable_path="C:\Program Files (x86)\Mozilla Firefox\geckodriver.exe")
    18.         return driver
    复制代码

    用phantomjs也可以,直接这样:

    1. driver = webdriver.PhantomJS(service_args=['--load-images=false'])
    复制代码

    这样,加载速度就可以快很多了。



    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-22 22:51 , Processed in 0.069280 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表