Selenium:如何删除所选属性

时间:2016-07-26 15:05:25

标签: java selenium

我有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)

2 个答案:

答案 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