【问题标题】:Protractor issue: click() function isn't working量角器问题:click() 函数不起作用
【发布时间】:2020-02-15 21:12:06
【问题描述】:

我有一个场景,许多 e2e 黄瓜测试用例都在使用按钮单击功能。我能够得到按钮的文本。但是如果点击它不会重定向或加载任何内容。

var next = element(by.cssClass('buttonclass'));
next.click();

上面的代码不工作,但如果我使用browser.executeScript("arguments[0].click();",next ) 然后点击工作。我无法更改代码,因为它被多个测试用例使用....原因是什么?

【问题讨论】:

  • 我的 Angular 应用程序正在与非 Angular 应用程序交互以进行身份​​验证 (sso)。我正在为此启用 angualr 为 false .... 在此保护器开始表现异常之后。不会等待控制加载..到处等待放置是一项乏味的任务..有时会等待很长时间并且会发生超时。还有其他建议吗??

标签: angular protractor end-to-end


【解决方案1】:

试试这个

var next = element(by.css('buttonclass'));

【讨论】:

  • 我的 Angular 应用程序正在与非 Angular 应用程序交互以进行身份​​验证 (sso)。我正在为此启用 angualr 为 false .... 在此保护器开始表现异常之后。不会等待控制加载..到处等待放置是一项乏味的任务..有时会等待很长时间并且会发生超时。还有其他建议吗??
  • 你试过显式等待吗?
【解决方案2】:

在构建测试时,仅与页面上的“单个”元素进行查找/交互非常重要。

意思是,您必须通过定位器查找元素:css、xpath.. 等,如果您开始看到“多个元素”,结果将只有“一个”元素找到,将使用第一个..”,这表明您需要返工定位器。

另一个好的做法是使用“等待条件”。

https://www.protractortest.org/#/api?view=ProtractorExpectedConditions

点击前,确保满足元素条件:elementToBeClickable

如果您有复杂的网站,量角器命令并不总是可以完成这项工作。在这种情况下,请使用 javascript 执行程序。

【讨论】:

  • 我的 Angular 应用程序正在与非 Angular 应用程序交互以进行身份​​验证 (sso)。我正在为此启用 angualr 为 false .... 在此保护器开始表现异常之后。不会等待控制加载..到处等待放置是一项乏味的任务..有时会等待很长时间并且会发生超时。还有其他建议吗??
【解决方案3】:

为什么会发生

您所指的元素可能是一个包装器,例如

<div id="id">
  text
  <button></button>
</div>

在这种情况下,如果您在 UI 中点击 divbutton 将获得点击,因为它与按钮重叠。当您使用量角器执行此操作时,它会准确单击您指定的元素。所以你可以从div#id 获取文本,但是如果你点击它会告诉你这个元素是不可点击的。这种类型的脚本browser.executeScript("arguments[0].click();",next )不关心页面布局,即使该元素在UI中不可见也会点击该元素

解决方案

你必须能够控制你的脚本,如果你不能在一个地方改变点击,那么你的代码不够灵活,你需要考虑如何改进它

【讨论】:

    猜你喜欢
    • 2016-08-20
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    • 2015-02-18
    • 2017-08-16
    • 1970-01-01
    相关资源
    最近更新 更多