下面给出的是一段代码,表示下拉列表。我需要在此下拉列表中选择 日期 值,表示为<option value="1" label="Date">Date</option>
<option value="1" label="Date">Date</option>
<select id="type" class="text-input ng-pristine ng-valid ng-scope ng-touched" ng-style="cssStyle" name="type" ng-if="!options.hidePlaceholder" ng-model="result.type" qmx-observe-value="text" ng-disabled="options.readonly" ng-options="obj.value as obj.text group by obj.groupby for obj in selectData" style="font-size: 13px; opacity: 1; width: 100%;"> <option class="ng-binding" value="">----</option> <option value="0" selected="selected" label="Text">Text</option> <option value="1" label="Date">Date</option> <option value="2" label="Numeric">Numeric</option> <option value="3" label="Switch">Switch</option> <option value="4" label="Map Location Marker">Map Location Marker</option> <option value="5" label="Picker">Picker</option> <option value="6" label="List">List</option> </select>
遵循方法无效。 1.)使用“ 选择” 通过导入 org.openqa.selenium.support.ui.Select* 选择此值 *
Select elm = new Select(driver.findElement(By.xpath(".//*[@id='type']/option[3]"))); elm.selectByVisibleText("Date");
控制台显示:
元素应该是“选择”但是“选项”
2.)首先单击下拉菜单以显示要选择的选项,然后单击该选项。
driver.findElement(By.xpath(".//*[@id='type']")).click(); driver.findElement(By.xpath(".//*[@id='type']/option[3]")).click();
DEBUG元素缺少可访问的名称:id:类型,tagName:SELECT,className:文本输入ng-原始ng-untouched ng- valid ng-scope
3.)使用JavascriptExecutor获得点击。
driver.findElement(By.xpath(".//*[@id='type']")).click(); ((JavascriptExecutor)driver).executeScript("arguments[0].click();", driver.findElement(By.xpath(".//*[@id='type']/option[3]")));
4.)使用鼠标悬停在选项上的下拉菜单中进行选择,然后对其进行单击。
driver.findElement(By.xpath(".//*[@id='type']")).click(); WebElement subdrop = driver.findElement(By.xpath(".//*[@id='type']/option[3]")); Actions action = new Actions(drive); action.moveToElement(subdrop).perform(); Custom.Twait(); action.click(subdrop).perform();
线程“主” org.openqa.selenium.UnsupportedCommandException中的异常:POST / session / a37a745a-e40c-45a9-9760-8e01b451a017 / moveto与已知命令不匹配(警告:服务器未提供任何堆栈跟踪信息)
我还添加了我在使用此代码的地方之间的等待时间。 为了简单起见,这里没有包括它。
需要帮忙。
在您的第一个选项中,硒明确指出 Element应该是“ select”但为“ option” ,这意味着您在提供xpathfor的option同时仅xpath希望选择。
xpath
option
不需要使用您提供的其他选项,只需使用以下第一个选项即可:-
Select elm = new Select(driver.findElement(By.id("type"))); elm.selectByVisibleText("Date");
要么 ByIndex
ByIndex
elm.selectByIndex(2);
要么 ByValue
ByValue
elm.selectByValue("1");
如果不幸的是您的第一个选项不起作用,我希望您使用第三个选项使用JavascriptExecutor,如下所示:-
JavascriptExecutor
WebElement select = driver.findElement(By.id("type")); ((JavascriptExecutor)driver).executeScript("var select = arguments[0]; for(var i = 0; i < select.options.length; i++){ if(select.options[i].text == arguments[1]){ select.options[i].selected = true; } }", select, "Date");
希望它能帮助您… :)