量角器点击在 IE 中不起作用,但在 chrome 中有效
Protractor click not working in IE, but works in chrome
我有一些 div
看起来像这样
<div class="someClassyStuff" on-tap="foo(param)"> Text </div>
我们在量角器中搜索并找到 div
元素,检查文本是否符合我们的预期,然后对该元素调用 click()
。测试在 Chrome 中运行良好,但在 IE 中好像没有点击发生.. 破坏测试。
IE 11 是否支持 on-tap
?
我尝试更改为 ng-click="foo(param)"
但没有效果。
有了自动化的 IE 浏览器,它总是很特别。试试点击 link :
var elm = element(by.css("div.someClassyStuff"));
browser.executeScript("arguments[0].click();", elm.getWebElement());
我遇到过这样的问题,在 firefox 中点击不会点击,但在 chrome 中会点击。解决方法是在 chrome.
中执行初始单击后添加鼠标按下和鼠标向上操作
browser.getCapabilities().then(function(cap){
element(by.css("div.someClassyStuff")).click();
if(cap.caps_.browserName == "ie"){
browser.actions().mouseDown().mouseUp().perform();
}
};
更新:
如果您还没有尝试,可以尝试的其他想法:
(双击)
element(by.css("div.someClassyStuff")).click().click();
我用来点击棘手的东西的另一件事是使用 expected conditions 来点击某些东西
// Wait for an element to be clickable then click it
global.waitAndClick = function(element, time, errMessage) {
if(typeof(time) ==='undefined') time = 10000;
var IsClickable = EC.elementToBeClickable(element);
browser.wait(IsClickable, time, errMessage);
return element.click();
};
waitAndClick(element(by.css("div.someClassyStuff")), 5000, "failed to click my elem");
我用这些能力解决了这个问题:
exports.config = {
capabilities: {
'browserName': 'internet explorer',
'version': 11,
'nativeEvents': false,
'unexpectedAlertBehaviour': 'accept',
'ignoreProtectedModeSettings': true,
'enablePersistentHover': true,
'disable-popup-blocking': true
}
};
您可以在浏览器堆栈设置中使用相同的方法:
exports.config = {
capabilities: {
'browser' : 'ie',
'browserName': '',
'browser_version' : '11',
'os' : 'Windows',
'os_version' : '7',
'browserstack.user': 'XXX',
'browserstack.key': 'XXX',
'version': 11,
'nativeEvents': false,
'unexpectedAlertBehaviour': 'accept',
'ignoreProtectedModeSettings': true,
'enablePersistentHover': true,
'disable-popup-blocking': true
}
};
在 Software Quality Assurance & Testing 处找到解决方案。
我在 IE 上遇到了类似的问题,没有元素可以接收到点击。原因是我在 Windows 中将我的 全局缩放设置为 >100%(桌面 > rclick > 显示设置)。显然这导致 IEDriver 点击了错误的坐标。
这个问题没有说明是否可以点击其他元素,但这可能是其他有类似问题的人的答案。
我有一些 div
看起来像这样
<div class="someClassyStuff" on-tap="foo(param)"> Text </div>
我们在量角器中搜索并找到 div
元素,检查文本是否符合我们的预期,然后对该元素调用 click()
。测试在 Chrome 中运行良好,但在 IE 中好像没有点击发生.. 破坏测试。
IE 11 是否支持 on-tap
?
我尝试更改为 ng-click="foo(param)"
但没有效果。
有了自动化的 IE 浏览器,它总是很特别。试试点击 link
var elm = element(by.css("div.someClassyStuff"));
browser.executeScript("arguments[0].click();", elm.getWebElement());
我遇到过这样的问题,在 firefox 中点击不会点击,但在 chrome 中会点击。解决方法是在 chrome.
中执行初始单击后添加鼠标按下和鼠标向上操作browser.getCapabilities().then(function(cap){
element(by.css("div.someClassyStuff")).click();
if(cap.caps_.browserName == "ie"){
browser.actions().mouseDown().mouseUp().perform();
}
};
更新:
如果您还没有尝试,可以尝试的其他想法:
(双击)
element(by.css("div.someClassyStuff")).click().click();
我用来点击棘手的东西的另一件事是使用 expected conditions 来点击某些东西
// Wait for an element to be clickable then click it
global.waitAndClick = function(element, time, errMessage) {
if(typeof(time) ==='undefined') time = 10000;
var IsClickable = EC.elementToBeClickable(element);
browser.wait(IsClickable, time, errMessage);
return element.click();
};
waitAndClick(element(by.css("div.someClassyStuff")), 5000, "failed to click my elem");
我用这些能力解决了这个问题:
exports.config = {
capabilities: {
'browserName': 'internet explorer',
'version': 11,
'nativeEvents': false,
'unexpectedAlertBehaviour': 'accept',
'ignoreProtectedModeSettings': true,
'enablePersistentHover': true,
'disable-popup-blocking': true
}
};
您可以在浏览器堆栈设置中使用相同的方法:
exports.config = {
capabilities: {
'browser' : 'ie',
'browserName': '',
'browser_version' : '11',
'os' : 'Windows',
'os_version' : '7',
'browserstack.user': 'XXX',
'browserstack.key': 'XXX',
'version': 11,
'nativeEvents': false,
'unexpectedAlertBehaviour': 'accept',
'ignoreProtectedModeSettings': true,
'enablePersistentHover': true,
'disable-popup-blocking': true
}
};
在 Software Quality Assurance & Testing 处找到解决方案。
我在 IE 上遇到了类似的问题,没有元素可以接收到点击。原因是我在 Windows 中将我的 全局缩放设置为 >100%(桌面 > rclick > 显示设置)。显然这导致 IEDriver 点击了错误的坐标。
这个问题没有说明是否可以点击其他元素,但这可能是其他有类似问题的人的答案。