我有WebElement
:
<select id="month">
<option value="empty">Select</option>
<option value="1">Jan</option>
<option value="2">Feb</option>
<option value="3">Mar</option>
<option value="4">Apr</option>
<option value="5">May</option>
<option value="6">Jun</option>
<option selected="" value="7">Jul</option>
<option value="8">Aug</option>
<option value="9">Sep</option>
<option value="10">Oct</option>
<option value="11">Nov</option>
<option value="12">Dec</option>
</select>
我想从attribute
中移除选定的Jul
,并将此属性置于不同的Month
下。
这就是我尝试删除Attribute
:
(JavascriptExecutor) driver).executeScript("arguments[0].setAttribute('selected', '')", myElement)
答案 0 :(得分:1)
通常,如果要删除属性,请使用JavaScript removeAttribute
方法,而不是尝试使用setAttribute
。但是,在这种情况下,您正在使用select
并希望选择其他元素。只需在selenium中使用内置的Select类,如下所示:
Select select = new Select(myElement);
select.selectByVisibleText("Aug");
我创建了一个包含以下内容的HTML文件,然后对其进行了测试。
<html>
<body>
<select id="month">
<option value="empty">Select</option>
<option value="1">Jan</option>
<option value="2">Feb</option>
<option value="3">Mar</option>
<option value="4">Apr</option>
<option value="5">May</option>
<option value="6">Jun</option>
<option selected="" value="7">Jul</option>
<option value="8">Aug</option>
<option value="9">Sep</option>
<option value="10">Oct</option>
<option value="11">Nov</option>
<option value="12">Dec</option>
</select>
</body>
</html>
然后运行以下代码:
@Test
public void testFoo() throws Exception {
WebDriver driver = new FirefoxDriver();
driver.manage()
.window()
.maximize();
driver.get("file:///blah/blah/blah/index.html");
Select select = new Select(driver.findElement(By.id("month")));
select.selectByVisibleText("Dec");
Thread.sleep(10_000);
}
该页面成功结束了&#34; Dec&#34;地选择。
答案 1 :(得分:0)
要取消选择一个选项,您可以使用deselectBy
方法
WebElement dropdown = driver.findElement(By.id("month"));
Select select = new Select(dropdown);
select.deselectByVisibleText("Aug");
// or
select.deselectByValue("7");
// or
select.deselectByIndex(8);
// or
select.deselectAll();
选择另一个月
select.selectByVisibleText("Feb")
// or
select.selectByValue("2");
请参阅Select class