selenium兼容非标准chrome内核的浏览器

多浏览器兼容性测试(1)

RIDE已经支持多浏览器兼容性测试,例如: 
firefox 
ie 
chrome 
safari 
但是,项目要求支持360极速和360安全浏览器。所以,我们需要增加代码让RIDE识别。其他浏览器类似(本地浏览器)。 
说明:基于Selenium: 3.0.2

from selenium.webdriver.chrome.options import Options
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time  

__browser_url = r‘C:\Users\Administrator\AppData\Roaming\360se6\Application\360se.exe‘  ##360浏览器的地址
chrome_options = Options()
chrome_options.binary_location = __browser_url  

driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get(‘http://www.baidu.com‘)
driver.find_element_by_id("kw").send_keys("seleniumhq" + Keys.RETURN)
time.sleep(3)
driver.quit() 

上面是直接使用,如果你觉得在测试框架中这么用不方便动态使用的话,可以做一层封装;

一、各浏览器webdriver

说明: 
1. selenium3.x中,firefox需要下载webdriver(geckodriver.exe)。 
2. 360极速和360安全浏览器的内核是chrome,目前支持内核版本45.x。拷贝两份chromedriver 2.20,可以重命名为360chromedriver & 360sechromedriver。

PS:注意,360浏览器会自动升级。请关闭自动升级。 
目录:C:\Users\username\AppData\Roaming\360se6\Application\8.1.1.250\installer,找到chromeup.dll文件,删除或者重命名。

二、增加代码支持让RIDE识别360浏览器

修改selenium\webdriver目录下__init__.py代码。 
目录:C:\Python27\Lib\site-packages\selenium\webdriver

from .firefox.webdriver import WebDriver as Firefox  # noqa
from .firefox.firefox_profile import FirefoxProfile  # noqa
from .chrome.webdriver import WebDriver as Chrome  # noqa
from .chrome.options import Options as ChromeOptions  # noqa
# 360 support
from .chrome360.webdriver import WebDriver as Chrome360 # 360 extreme browser
from .chrome360se.webdriver import WebDriver as Chrome360se # 360 security browser
#
from .ie.webdriver import WebDriver as Ie  # noqa
from .edge.webdriver import WebDriver as Edge  # noqa
from .opera.webdriver import WebDriver as Opera  # noqa
from .safari.webdriver import WebDriver as Safari  # noqa
from .blackberry.webdriver import WebDriver as BlackBerry  # noqa
from .phantomjs.webdriver import WebDriver as PhantomJS  # noqa
from .android.webdriver import WebDriver as Android  # noqa
from .remote.webdriver import WebDriver as Remote  # noqa
from .common.desired_capabilities import DesiredCapabilities  # noqa
from .common.action_chains import ActionChains  # noqa
from .common.touch_actions import TouchActions  # noqa
from .common.proxy import Proxy  # noqa

__version__ = ‘3.0.2‘

修改Selenium2Library\keywords下browsermanagement.py代码 
目录:C:\Python27\Lib\site-packages\robotframework_selenium2library-1.8.1-py2.7.egg\Selenium2Library\keywords

代码段一:

ROOT_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
FIREFOX_PROFILE_DIR = os.path.join(ROOT_DIR, ‘resources‘, ‘firefoxprofile‘)
BROWSER_NAMES = {‘ff‘: "_make_ff",
                 ‘firefox‘: "_make_ff",
                 ‘ie‘: "_make_ie",
                 ‘internetexplorer‘: "_make_ie",
                 ‘googlechrome‘: "_make_chrome",
                 ‘gc‘: "_make_chrome",
                 ‘chrome‘: "_make_chrome",
                 #360 Extreme Browser
                 ‘chrome360‘: "_make_chrome360",
                 #360 Security Browser
                 ‘chrome360se‘: "_make_chrome360se",
                 ‘opera‘ : "_make_opera",
                 ‘phantomjs‘ : "_make_phantomjs",
                 ‘htmlunit‘ : "_make_htmlunit",
                 ‘htmlunitwithjs‘ : "_make_htmlunitwithjs",
                 ‘android‘: "_make_android",
                 ‘iphone‘: "_make_iphone",
                 ‘safari‘: "_make_safari",
                 ‘edge‘: "_make_edge"
                }

代码二:搜索def _make_chrome,增加两段代码

 def _make_chrome(self , remote , desired_capabilities , profile_dir):
        return self._generic_make_browser(webdriver.Chrome,
                webdriver.DesiredCapabilities.CHROME, remote, desired_capabilities)

#360 Extreme Browser
    def _make_chrome360(self , remote , desired_capabilities , profile_dir):
        return self._generic_make_browser(webdriver.Chrome360,
                webdriver.DesiredCapabilities.CHROME, remote, desired_capabilities)

#360 Security Browser
    def _make_chrome360se(self , remote , desired_capabilities , profile_dir):
        return self._generic_make_browser(webdriver.Chrome360se,
                webdriver.DesiredCapabilities.CHROME, remote, desired_capabilities)

三、360浏览器的实现代码

目录:C:\Python27\Lib\site-packages\selenium\webdriver

文件1:__init__.py,可以为空,也可以增加说明文字。例如,作者,版本,功能等。 
文件2:新建webdriver.py,实现360极速浏览器。代码如下:from selenium.webdriver import Chrome as ChromeWebdriver

from selenium.webdriver.chrome.options import Options
import os

class WebDriver(ChromeWebdriver):

    def __init__(self, b360bin=None, executable_path="360chromedriver", port=0,
                    chrome_options=None, service_args=None,
                    desired_capabilities=None, service_log_path=None):

        # 360 broswer direction
        if b360bin:
            self.bin = b360bin
        else:
            self.bin = r‘%s\360Chrome\Chrome\Application\360chrome.exe‘ % os.getenv(‘LOCALAPPDATA‘)
        chrome_options = Options()
        chrome_options.binary_location = self.bin
        ChromeWebdriver.__init__(self, executable_path, port,
                    chrome_options, service_args,
                    desired_capabilities, service_log_path)
360安全浏览器类似:
from selenium.webdriver import Chrome as ChromeWebdriver
from selenium.webdriver.chrome.options import Options
import os

class WebDriver(ChromeWebdriver):

    def __init__(self, b360bin=None, executable_path="360sechromedriver", port=0,
                    chrome_options=None, service_args=None,
                    desired_capabilities=None, service_log_path=None):

        # 360se broswer direction
        if b360bin:
            self.bin = b360bin
        else:
            self.bin = r‘C:\Users\Administrator\AppData\Roaming\360se6\Application\360se.exe‘
        chrome_options = Options()
        chrome_options.binary_location = self.bin
        ChromeWebdriver.__init__(self, executable_path, port,
                    chrome_options, service_args,
                    desired_capabilities, service_log_path)


转载:https://blog.csdn.net/Allan_shore_ma/article/details/63757206

原文地址:https://www.cnblogs.com/hupilan521/p/9238018.html

时间: 2024-10-28 14:58:02

selenium兼容非标准chrome内核的浏览器的相关文章

python selenium中如何测试360等基于chrome内核的浏览器

转自:https://blog.csdn.net/five3/article/details/50013159 直接上代码,注意是基于chrome内核的浏览器,基于ie的请替换其中的chrome方法为ie,但自己未尝试过,如果有结果可以告知! from selenium.webdriver.chrome.options import Optionsfrom selenium import webdriverfrom selenium.webdriver.common.keys import Ke

关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器

这篇文章主要介绍了关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器,需要的朋友可以参考下.希望对大家有所帮助 Firefox 和 IE 的浏览器各自实现了input历史记录的功能,可以简化输入时的麻烦,但是,有时候弹出的下拉框会挡住页面显示内容,而且在某些情况下也不需要对input框进行记录,如号码查询的input框,用户不会对同一个号码进行多次查询,就没有必要让浏览器记录. MSIE自定义了input 的扩展属性 autocomplete,置为off即可 <input typ

在chrome内核的浏览器上youtube

对于平时使用google.com来查东西的程序员,没有一个fq的软件,查个东西实在是窝心啊.通过网络搜索终于发现一个好用的fq插件叫红杏,经过使用,很稳定,速度也快.唯一的缺点就是只能在chrome内核的浏览器上使用. 下载地址:http://honx.in/i/VLm81YIaAxjMGVPn

在 .NET 中开发基于 Chrome 内核的浏览器-创建一个简单浏览器

首先在 http://www.cftea.com/tools/downloads/Cef.zip 下载文件包. 一.将文件解压拖入到 Visual Studio 对应的 WinForm 项目中. 二.在解决方案中,在这些文件上右键,选择属性,在“复制到输出目录”中选择“始终复制”(不要忘了 locales 中的文件也要这样操作). 三.项目上右键添加引用:CefSharp.dll.CefSharp.WinForms.dll 四.在 WinForm 相应的位置使用类似如下的代码: [csharp]

Microsoft Edge Insider (Chrome内核的Edge)

自己用浏览器不喜欢折腾,希望轻度设置就可顺手得使用. 因为用火狐一直感觉速度上不及chrome内核的浏览器,字体渲染也不太习惯,就一直在用chrome内核浏览器,当然火狐也是很不错的,千人千机,每个人的喜好都不同,只是记录下自己觉得体验不错的浏览器. 之前一直用的是百分浏览器,体验相当不错,但是是谷歌的同步功能,所以用起来不是很方便. http://www.centbrowser.cn/features.html 后来发现,微软家的Edge支持了中文,用的是微软账号同步,就下载体验,整体比较简洁

【笔记】让360浏览器用chrome 内核渲染你的网页

学校的项目还处在测试阶段 有一个痛点就是有一些页面在360浏览器中默认以ie 内核渲染 这样很不好 以为部分页面因技术方面的不足导致并不能很好地兼容ie 浏览器,于是在网上找了一下答案 可真还有解决方法 只要在你的页面加上这个meta 标签便可以让360 浏览器默认以 chrome 内核渲染页面 <meta name="renderer" content="webkit"> 另外还有其他两种选择 页面需默认用ie兼容内核,增加标签:<meta na

IE内嵌google chrome frame解决浏览器兼容问题

IE内嵌google chrome frame解决浏览器兼容问题 http://www.cnblogs.com/xwdreamer/archive/2013/12/17/3477776.html 参考文献: http://www.pseudowired.com/2012/12/04/tomcat-http-header-manipulation/(html中自动添加使用chrome的header) http://www.baike.com/wiki/Google+Chrome+Frame(goo

C# 开发Chrome内核浏览器(WebKit.net)

http://www.cnblogs.com/linyijia/p/4045333.html WebKit.net是对WebKit的.Net封装,使用它.net程序可以非常方便的集成和使用webkit作为加载网页的容器.这里介绍一下怎么用它来显示一个网页这样的一个最简单的功能. 自制浏览器C#chrome内核

Web系统如何做到读取客户电脑MAC等硬件信息且兼容非IE浏览器

我们在实际Web应用中,可能会遇到“需要限定特定的电脑或用户才能使用系统”的问题. 对于一般情况来说,我们用得最多的可能是使用ActiveX控件的方法来实现,但此方案只适用于IE浏览器.为了能兼容不同的浏览器,如FireFox等,我们就需要考虑到一种比较通用的方法.此方法我们可以参考“在很多网站中,会在网页的某个地方给一个链接来直接启动QQ来聊天”.这种方法可以实现Web系统来调用客户端电脑的某个exe文件(前提是在客户端必须安装需调用的exe应用程序).QQ的解决方法是采用在OS中注册一种自定