如何点击量角器中的隐藏元素?

时间:2014-03-08 04:31:21

标签: javascript css angularjs selenium-webdriver protractor

我有一个只有当我将鼠标悬停在它上面时才能看到的元素。

我已经编写了以下代码来覆盖面板,以便元素可见。

ptor.actions().
            mouseMove(ptor.findElement(protractor.By.xpath('//*[@id="productapp"]/div/div/div[2]/div/div/div/div[2]/div/div/div/div[4]/table/thead/tr/th[2]'))).
            perform();
        ptor.element.all(by.tagName('i')).then(function(elm){
            elm[0].click();
        });

现在我试图点击它,但它说 -     ElementNotVisibleError:元素不可见 量角器中的错误。

基本情况是,我想将鼠标悬停在某个面板上,然后点击隐藏元素,因为该元素在悬停之前不可见。

2 个答案:

答案 0 :(得分:6)

有时,有些情况下您有意想点击隐藏元素。

一种选择是点击通过javascript

var elm = element(by.id("myid"));
browser.executeScript("arguments[0].click();", elm.getWebElement());

另请参阅:WebDriver click() vs JavaScript click()

另一个,使元素可见并单击它。现在,这取决于元素的隐藏方式 - 使用style.blockstyle.visibility或使用ng-hide等示例解决方案,我们将元素的visibility设置为{{1 }和visibledisplay

block

答案 1 :(得分:5)

以下代码为我工作。

  ptor.actions().
    mouseMove(ptor.findElement(protractor.By.xpath('//*@id="productapp"]/div/div/di‌​v[2]/div/div/div/div[2]/div/div/div/div[4]/table/thead/tr/th[2]'))).perform();

   ptor.element.all(by.css('i.ng-scope.tea-ic-sorting')).then(function(elm){
       elm[0].click();
    });