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

Selenium webdriver 量角器-由于固定顶部导航栏,无法访问元素,selenium-webdriver,jasmine,protractor,gulp-protractor,Selenium Webdriver,Jasmine,Protractor,Gulp Protractor,我和jasmine在量角器中面临以下问题 由于我的应用程序中的固定顶部导航栏,单击/鼠标悬停不起作用。我需要在网页上单击/执行鼠标悬停。 不幸的是,该元素显示在固定的导航栏后面。因此,滚动到元素出现并单击x&y坐标不起作用 我的依赖项是: 量角器版本5.2.2 节点8.9.3 硒独立3.13 chrome驱动程序-2.40 chromebrowser v67 操作系统-视窗10 提前感谢尝试使用prototype executeScript 只需尝试使用id、name或xpath从浏览器控制台单

我和jasmine在量角器中面临以下问题

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

我的依赖项是:

量角器版本5.2.2

节点8.9.3

硒独立3.13

chrome驱动程序-2.40

chromebrowser v67

操作系统-视窗10


提前感谢

尝试使用prototype 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);
    });

另一方面,正如Bharath Kumar所说,我知道JeffC的警告,这种方法是作弊的,我也遇到了类似的问题,应用程序标题一直在阻碍我点击,我知道我永远不会需要它(例如,找到其他导航或注销的方式,而不检查上面的内容)。一、 因此,采取了以下措施,解决了问题。注意:如果刷新屏幕,则必须再次调用。还要注意的是,我使用了来自的许多函数,它们实现了您从它们的名称中所期望的功能

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(found)和相关括号。但是我粘贴了一些我知道一直有效的东西,所以我没有弄乱它


正如前面所指出的,我知道我愿意放弃应用程序标题的使用,这有点粗糙

欢迎来到Stack Overflow-很高兴有你。请阅读并帮助将堆栈溢出内容保持在尽可能高的级别,并增加获得适当答案的机会。请提供您现在拥有的代码,否则我们无法帮助您。您可以做几件事。。。始终将所需元素滚动到页面中心,始终向下滚动x个像素数(导航栏的高度,等等…您正在寻找什么类型的解决方案?请发布您尝试的代码和收到的任何错误消息。希望此解决方案能帮助解决您的问题:)只是为了清楚。。。无论何时使用JS执行操作,都不再执行用户操作。Selenium被设计为只与用户可以交互的元素交互,并在这个设计中使用JS“欺骗”。