1

我正在尝试使用 protractorjs 测试我的 angularjs 应用程序。我已经设置了 selenium 并让服务器和运行器正常工作。我的问题是,当我运行测试时,我得到了 ElementNotVisibleError。我知道在填写某些字段之前,我尝试选择的元素是隐藏的,这就是我希望保留的方式。

我的问题是,是否有任何通过调用等待或睡眠来解决该问题的方法。我尝试了许多等待和睡眠的变体,但没有运气。

我的测试代码是

it('navigates the user to the login page', function(){
    ptor = protractor.getInstance();
    ptor.get('http://localhost:2222/#/page');

    ptor.findElement(protractor.By.input('input.type1')).sendKeys('one');
    ptor.findElement(protractor.By.input('input.type2')).sendKeys('two');
    ptor.findElement(protractor.By.input('input.type3')).sendKeys('three');
    ptor.findElement(protractor.By.input('input.type4')).sendKeys('four');
    ptor.findElement(protractor.By.input('input.type5')).sendKeys('five');
    ptor.findElement(protractor.By.input('input.type6')).sendKeys('six');
    ptor.sleep(5000);
    ptor.findElement(protractor.By.id('clickableBtn')).click();//not visible until above fields populated

}, 1000000);

量角器的消息是

Message:
    ElementNotVisibleError: element not visible
4

4 回答 4

2

如果在您输入所有字段之前该元素不可见,那是因为 Javascript。您可能必须通过键入TabEnter在键入最后一个字段之后启动该 Javascript:

ptor.findElement(protractor.By.input('input.type6')).sendKeys(Keys.Tab);
于 2013-08-21T13:49:11.300 回答
2

使用 javascript 我可以点击

var linkToClick = ptor.driver.findElement(protractor.By.id('clickableBtn'));

ptor.executeScript("arguments[0].click();", linkToClick );
于 2015-09-23T14:03:57.890 回答
1

是的,WebDriver 允许您直接在元素上执行 javascript,因此只需执行 javascript .click。您需要转换为您自己的语言,但这是我使用 C# 的方法

        IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
        js.ExecuteScript("arguments[0].click()", element);
        Browser.WaitForPageLoad(driver);

我实际上创建了一个扩展器方法,因此我只需键入 element.InvisibleClick(driver) 并为我单击它。更多信息可以在这里找到记录

于 2013-08-21T13:52:56.207 回答
-1

你可以随时给它opacity:0

-moz-opacity: 0.00; opacity:.00; filter: alpha(opacity=00);

这应该适用于所有浏览器。

于 2013-08-21T13:47:30.390 回答