多选择的量角器测试给出'元素不可见'错误

时间:2017-11-08 08:55:31

标签: google-chrome selenium protractor

我有以下带有多选元素的html代码。在使用量角器运行测试以选择选项时,我将错误视为“元素不可见”。

    <div id="one" class="class1">
    <select id="select1" style="width: 70%;" class="multiselect" multiple="multiple" ng-model="formData.abcqw">
    <option value="abc">ABC</option>
    <option value="xyz">XYZ</option>
    <option value="pqr">PQR</option>
    </select>
    </div>


     protractor code :  
     browser.actions().
     mouseMove(element(by.className("multiselect"))).click().perform();
     element(by.model("formData.abcqw")).sendKeys("abc");

感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

尝试下面的代码,我在我的本地复制了相同的代码并验证了以下代码,它运行正常:

var EC = protractor.ExpectedConditions;
var multiSelectElement = element(by.model('formData.abcqw');
browser.wait(EC.visibilityOf(multiSelectElement))).then(function() {
    browser.wait(EC.elementToBeClickable(multiSelectElement.element(by.cssContainingText('option', 'ABC'))))).then(function() {
        multiSelectElement.element(by.cssContainingText('option', 'ABC')).click();
    }); 
});

答案 1 :(得分:0)

从您分享的<select> AngularJS标记是wait元素,WebDriverWait非常明显,因此我们必须诱导var EC = protractor.ExpectedConditions; // Waits for the element with id 'select1' to be selected. browser.wait(EC.elementToBeSelected($('#select1')), 5000); <form method="post" name="form1"> 如下可供选择的元素:

 <form action="yourcontroller/action" method="post" name="form1">

答案 2 :(得分:0)

我也认为这是一个等待问题。 每当您看到此“元素不可见错误”时,您可以添加

browser.sleep(5000);
在点击语句之前

再试一次

如果不起作用,请尝试下面的操作。 当我们故意想要点击隐藏元素时。所以这应该有用

  var elm = element(by.className("multiselect "));
    browser.executeScript("arguments[0].click();", elm.getWebElement());
    browser.sleep(2000);
    element(by.model("formData.abcqw")).sendKeys("abc");