量角器点击在 IE 中不起作用,但在 chrome 中起作用
Posted
技术标签:
【中文标题】量角器点击在 IE 中不起作用,但在 chrome 中起作用【英文标题】:Protractor click not working in IE, but works in chrome 【发布时间】:2015-11-27 08:24:33 【问题描述】:我有一些 div
看起来像这样
<div class="someClassyStuff" on-tap="foo(param)"> Text </div>
在量角器中,我们搜索并找到 div
元素,检查文本是否符合我们的预期,然后在该元素上调用 click()
。测试在 Chrome 中运行良好,但在 IE 中好像没有点击发生.. 破坏测试。
IE 11 是否支持on-tap
?
我尝试更改为ng-click="foo(param)"
,但没有任何效果。
【问题讨论】:
【参考方案1】:我用这些功能解决了这个问题:
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找到解决方案。
【讨论】:
【参考方案2】:我在 IE 中遇到了类似的问题,没有元素可以接收到点击。原因是我将 Windows 中的 全局缩放设置为 >100%(桌面 > rclick > 显示设置)。显然这导致 IEDriver 点击了错误的坐标。
该问题未指定是否可以单击其他元素,但这可能是其他有类似问题的人的答案。
【讨论】:
您能否将其改写为问题的答案? 这适用于我的情况。但是,除了更改 Windows 设置之外,还有其他选择吗?在我的笔记本电脑上 100% 会导致文本非常小【参考方案3】:有了自动化的 IE 浏览器,它总是很特别。尝试点击链接"via javascript":
var elm = element(by.css("div.someClassyStuff"));
browser.executeScript("arguments[0].click();", elm.getWebElement());
【讨论】:
终于(我知道)开始尝试这种技术,不幸的是它似乎并没有改变这种情况。【参考方案4】:我遇到过这样的问题,在 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");
【讨论】:
我注意到您不使用.then()
.. 这是故意的还是您认为它会在.then()
中起作用?
刚刚尝试过这种技术,有无承诺。好像没有什么效果。困扰我的是我没有真正的方法来调试它而不会引发错误。想知道这是不是IE驱动的错以上是关于量角器点击在 IE 中不起作用,但在 chrome 中起作用的主要内容,如果未能解决你的问题,请参考以下文章