2016-07-07 50 views
1

方案:用量角器一键VS两次点击

  • 测试Web应用程序
  • 元素需要点击即可打开另一个页面
  • 设计测试有一个点击的元素

期: 有时元素需要点击一次,测试通过但如果再次运行它,同一元素需要双击

这导致我的测试失败

我通过更改命令以在量角器中双击并通过验证。

这导致了不一致,因为我不知道元素何时需要单击或双击。

任何建议表示赞赏?

回答

0

你可能只是需要把元素成为焦点明确通过mouseMove(),然后发出click()动作:

browser.actions().mouseMove(elm).click().perform(); 
+0

@ alecxe:这就是我们如何在做它仍然有问题 – Kevin

+0

@Kevin好吗,你如何引入[自定义睡眠动作](http://stackoverflow.com/questions/32789460/custom-browser-actions-in-protractor)并像这样做:'browser.actions()。mouseMove(elm )。睡眠(50)。单击()执行();'。当然,这并不理想,但看看它是否真的有帮助。 – alecxe

0

不一致可能是因为元素是还没有准备好点击。所以你需要等到元素变成可点击并点击它。下面的代码将帮助您实现一致性。

Code Snippet: 

    var EC = protractor.ExpectedConditions; 
    var elementToBeClick=element(locator); 
    var timeOut=10000; 

    browser.wait(EC.elementToBeClickable(elementToBeClick), timeOut). 
     thenCatch(function() { 
       assert.fail(' target element is not clickable'); 
      }); 
    elementToBeClick.click(); 
0

您可以使用browser.executeScripts将本地JavaScript代码注入浏览器并单击所需的按钮。这将是你传递到功能

尝试下面的代码所需要的元素上执行的单击事件,

var elementToBeClick=element(locator); 
browser.executeScript("arguments[0].click()",elementToBeClick.getWebElement()) 
+0

请注意,它与常规点击不同:http://stackoverflow.com/questions/34562061/webdriver-click-vs-javascript-click。 – alecxe

+0

我同意。但在某些情况下,用户可以点击按钮,但硒不能使用。这些场景可以使用本地点击事件来处理 –