在我最近的一篇文章中,我遇到了hideen元素的问题(参见Here)。从那时起,我已经从chrome驱动程序转移到phantomjs进行无头测试。
我的问题是这个。
由于选择隐藏元素的移动导致下面的错误,
UnknownError:错误消息=> ''undefined'不是一个函数(评估'arguments [0] .click()')'
在chrome(webdriver)中运行很好并且所有测试都通过但是phantomjs似乎不喜欢这种方法。是否存在使用phantomjs
和protractorjs
在测试中运行的此问题的另一种方法。
修改 以下测试是我遇到的问题
it('should redirect to addresses', function () {
var hiddenWebElement = ptor.driver.findElement(by.css('ul#myaccount li:nth-child(2) a'));
ptor.driver.executeScript("arguments[0].click()",hiddenWebElement).then(function() {
expect(ptor.driver.getCurrentUrl()).toContain('#/addresses');
});
}, 15000);
我的配置文件是
// An example configuration file.
exports.config = {
// The address of a running selenium server.
seleniumAddress: 'http://localhost:4444/wd/hub',
baseUrl: 'http://localhost:52254',
// Capabilities to be passed to the webdriver instance.
capabilities: {
'browserName': 'phantomjs'
},
// Spec patterns are relative to the current working directly when
// protractor is called.
specs: [
'Scenarios/account_spec.js',
'Scenarios/add_address_spec.js'
],
// Options to be passed to Jasmine-node.
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000
}
};
需要注意的是,在此次运行之上的所有测试都会产生下面的测试,在尝试查找元素时再次出现问题
it('should redirect to login', function () {
ptor.driver.findElement(by.id('headerLoginBtn')).click().then(function () {
expect(ptor.driver.getCurrentUrl()).toContain('/Account/Login');
});
}, 15000);
抛出元素异常的是不可见的。此场景中的测试也使用ptor.driver,因为页面包含c#ASP.NET代码。
答案 0 :(得分:0)
我找到了一种对我来说唯一可能的解决方法。我删除了隐藏元素的CSS,然后点击它,它工作。我正在使用硒,但它应该是类似的解决方案
executeJavaScript("$('.log-out').removeClass('hide');");
driver.findElement(By.className("log-out")).click();