Как нажимать на скрытый элемент в транспортире?
У меня есть элемент, который виден только тогда, когда я навис над ним.
Я написал следующий код для перемещения по панели, чтобы этот элемент был виден.
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: элемент невидим
ошибка в транспортире.
Основной сценарий: я хочу нависнуть над панелью, а затем щелкнуть по скрытому элементу, потому что элемент невидим, пока он не зависнет.
Ответы
Ответ 1
Следующий код работал у меня.
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.css('i.ng-scope.tea-ic-sorting')).then(function(elm){
elm[0].click();
});
Ответ 2
Иногда случаются случаи, когда вы намеренно хотите щелкнуть скрытый элемент.
Один из вариантов - щелкнуть по javascript:
var elm = element(by.id("myid"));
browser.executeScript("arguments[0].click();", elm.getWebElement());
См. также: Щелкните по WebDriver() и нажмите JavaScript()
Другой, чтобы сделать элемент видимым и щелкнуть по нему. Теперь это зависит от того, как был скрыт элемент - с помощью style.block
или style.visibility
или с помощью ng-hide
и т.д. Пример решения, в котором мы установили элемент visibility
в visible
и display
в block
:
var elm = element(by.id("myid"));
browser.executeScript(function (arguments) {
arguments[0].style.visibility = 'visible';
arguments[0].style.display = 'block';
}, elm.getWebElement());