量角器-由于顶部导航栏固定而无法访问元素

时间:2018-08-09 12:48:12

标签: selenium-webdriver jasmine protractor gulp-protractor

我在量角器用茉莉花中遇到以下问题

由于我的应用程序中的顶部导航栏固定,因此单击/鼠标悬停不起作用。我需要在网页上单击/执行鼠标悬停。 不幸的是,该元素显示在该固定导航栏的后面。因此,滚动直到出现元素并按x和y坐标单击均不起作用。

我的依赖项是:

量角器版本5.2.2

节点8.9.3

硒独立版3.13

chrome驱动程序2.40

chromebrowser v67

OS- Windows 10

预先感谢

2 个答案:

答案 0 :(得分:0)

尝试使用原型executeScript

只需尝试使用id,name或xpath从浏览器控制台中单击该元素。

例如:

var el = element(by.module('header'));
var tag = browser.executeScript('return arguments[0].click()', el).then(function() {
        expect(something).toMatch(something);
    });

答案 1 :(得分:0)

另一种方式是,与Bharath Kumar S一样,并知道JeffC的警告是这种方式正在作弊,我遇到了类似的问题,即App-Header一直妨碍我的点击方式,而且我知道我愿意永远不需要它(例如,找到其他导航或登出方式而不检查其中的内容)。因此,我进行了以下操作,从而解决了该问题。请注意,如果刷新屏幕,则必须再次调用它。还要注意,我正在使用https://github.com/hetznercloud/protractor-test-helper中的许多函数,这些函数可以实现它们的名称。

var removeAppHeaderIfAny = async function() {

  //this function hides the app header
  //it is useful to avoid having covers there when Protractor worries that something else will get the click

  let found = false;
  try {
    found = await waitToBeDisplayed(by.className("app-header"), 2000);
  } catch (e) {
    let s: string = "" + e;
    if (s.search("TimeoutError") != 0) flowLog("presumably fine, cover already removed: " + e);
    found = false;
  }
  if (!found) return;

  if (found) {
    let coverElement = await element(by.className("app-header"));
    browser.executeScript(
      "arguments[0].style.visibility='hidden';",
      coverElement
    );
    await waitToBeNotDisplayed(by.className("app-header"), 10000);
  }
  return;
  //note after this is called you will not see the item, so you cannot click it
};

当我看代码时,它令我印象深刻,我可以在末尾删除if(找到)和相关的括号。但是我粘贴了一些我知道一直有效的东西,所以我不会对此感到困惑。

如前所述,我知道我愿意放弃使用应用程序头,这有点粗糙。