我有以下带有多选元素的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");
感谢任何帮助。
答案 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");