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

Piy*_*joo 11 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();
        });
Run Code Online (Sandbox Code Playgroud)

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

基本情况是,我想将鼠标悬停在一个面板上,然后单击隐藏元素,因为该元素在盘旋之前是不可见的.

ale*_*cxe 6

有时,有些情况下您有意要单击隐藏元素.


一种选择是通过javascript点击:

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

另请参阅:WebDriver单击()vs JavaScript单击()


另一个,使元素可见并单击它.现在,这取决于元素是如何隐藏-用style.blockstyle.visibility或与ng-hide我们设定等样品溶液中的元素visibility,以visibledisplayblock:

var elm = element(by.id("myid"));
browser.executeScript(function (arguments) {
    arguments[0].style.visibility = 'visible'; 
    arguments[0].style.display = 'block';
}, elm.getWebElement());
Run Code Online (Sandbox Code Playgroud)


Piy*_*joo 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();
    });
Run Code Online (Sandbox Code Playgroud)