加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

无法使用Selenium和IEWebDriverServer 3.4.0在Windows Server 20

发布时间:2020-12-14 02:18:15 所属栏目:Windows 来源:网络整理
导读:操作系统: Windows Server 2016 Datacenter(64位) 浏览器:Internet Explorer 11.0.14393.0 量角器:5.1.2 Selenium服务器独立版:3.4.0 IEWebDriverServer.exe:3.4.0 Java:1.8.0_131 我们正尝试在Windows Server 2016 VM上针对Internet Explorer 11运行
>操作系统: Windows Server 2016 Datacenter(64位)
>浏览器:Internet Explorer 11.0.14393.0
>量角器:5.1.2
> Selenium服务器独立版:3.4.0
> IEWebDriverServer.exe:3.4.0
> Java:1.8.0_131

我们正尝试在Windows Server 2016 VM上针对Internet Explorer 11运行自动化测试.可以通过Selenium服务器对VM上的Chrome执行测试,但在IE中失败.

当针对IE运行时,量角器能够启动在IE中打开的Selenium服务器.然后在地址栏中使用’about:blank’启动另一个窗口.这会快速关闭,并在控制台窗口中显示以下错误:

[13:57:18] I/launcher - Running 1 instances of WebDriver  
[13:57:18] I/local - Starting selenium standalone server...  
[13:57:19] I/local - Selenium standalone server started at   http://10.X.X.X:61263/wd/hub   
Started    
A Jasmine spec timed out. Resetting the WebDriver Control Flow.    

Failures:  
1) angularjs homepage todo list should add a todo  
  Message:  
    Failed: JavaScript error (WARNING: The server did not provide any stacktrace information)  
    Command duration or timeout: 26 milliseconds  
    Build info: version: '3.4.0',revision: 'unknown',time: 'unknown'  
    System info: host: 'XXXX',ip: '10.X.X.X',os.name: 'Windows Server 2016',os.arch: 'x86',os.version: '10.0',java.version: '1.8.0_131'  
    Driver info: org.openqa.selenium.ie.InternetExplorerDriver

从Web驱动程序进一步记录已发现一些[访问被拒绝.]问题:

D 2017-06-22 10:43:26:213 BrowserFactory.cpp(248) Starting IE using the IELaunchURL API  
D 2017-06-22 10:43:26:360 BrowserFactory.cpp(202) IE launched successfully with process ID 4612  
D 2017-06-22 10:43:26:360 BrowserFactory.cpp(208) Process with ID 4612 is executing iexplore.exe  
D 2017-06-22 10:43:26:360 BrowserFactory.cpp(375) Using Active Accessibility to find IWebBrowser2 interface  
D 2017-06-22 10:43:27:615 BrowserFactory.cpp(434) Found window handle 000A017A for window with class 'Internet Explorer_Server' belonging to process with id 4612  
D 2017-06-22 10:43:27:636 BrowserFactory.cpp(396) Ignoring zoom setting: 0  
W 2017-06-22 10:43:27:644 BrowserFactory.cpp(664) -2147024891 [Access is denied.]: Call to IHTMLWindow2::get_screen failed  
…  
I 2017-06-22 10:43:28:028 Browser.cpp(130) No child frame focus. Focus is on top-level frame  
W 2017-06-22 10:43:28:040 Script.cpp(494) -2147024891 [Access is denied.]: Unable to execute code,call to IHTMLWindow2::execScript failed  
W 2017-06-22 10:43:28:040 Script.cpp(180) Cannot create anonymous function  
W 2017-06-22 10:43:28:040 response.cc(77) Error response has status code 17 and message 'JavaScript error' message  
…

很明显IE中存在权限问题,但浏览器安全设置的任何松动都没有产生任何影响.

我尝试过的:

>为所有区域设置“启用保护模式”
>将“允许Microsoft Web浏览器控件的脚本”设置为启用
>尝试了许多IEWebDriverServers,包括32位和64位版本
>尝试IE11 32和64位
>为IE(https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver)的32位和64位实例添加了2个注册表项FEATURE_BFCACHE
>已禁用’增强保护模式’
>本文中提到的配置:http://elgalu.github.io/2014/run-protractor-against-internet-explorer-vm/

有没有人在Windows Server 2016上运行IEDriverServer有什么成功?如何通过这些访问被拒绝的问题?

量角器配置:

exports.config = {

capabilities: {
'browserName': 'internet explorer','platform': 'WINDOWS','version': '11'
},seleniumServerJar: '<absolute path to /npm/node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-3.4.0.jar>',localSeleniumStandaloneOpts : {
    jvmArgs : ["-Dwebdriver.ie.driver.loglevel=DEBUG","-Dwebdriver.ie.driver.logfile=C:/IEServerlog.log","-Dwebdriver.ie.driver=<absolute path to /npm/node_modules/protractor/node_modules/webdriver-manager/selenium/IEDriverServer3.4.0.exe>"]
},specs: ['spec.js']
};

Spec.js:

describe('angularjs homepage todo list',function() {
  it('should add a todo',function() {
    browser.get('https://angularjs.org');

    element(by.model('todoList.todoText')).sendKeys('write first protractor test');
    element(by.css('[value="add"]')).click();

    var todoList = element.all(by.repeater('todo in todoList.todos'));
    expect(todoList.count()).toEqual(3);
    expect(todoList.get(2).getText()).toEqual('write first protractor test');

    // You wrote your first test,cross it off the list
    todoList.get(2).element(by.css('input')).click();
    var completedAmount = element.all(by.css('.done-true'));
    expect(completedAmount.count()).toEqual(2);
  });
});

解决方法

我在其他版本的webdriver-manager中遇到过这个问题.使用3.4.0解决了问题

webdriver-manager update --versions.standalone=3.4.0 --ie32

将webdriver-manager更新到3.4.0并启动特定的3.4.0

webdriver-manager start --versions.standalone=3.4.0

您应该能够在IE浏览器中运行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读