2016-07-26 74 views
0

我有这个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> 

而且我想删除从Jul选定attribute,并把这个属性在不同Month。 这就是我试图删除Attribute

(JavascriptExecutor) driver).executeScript("arguments[0].setAttribute('selected', '')", myElement) 
+0

为什么要删除使用Selenium的“选择”属性?你可以通过Javascript来完成。 – Harish

回答

1

一般来说,如果你想删除属性使用JavaScript removeAttribute方法,而不是试图用setAttribute。但在这种情况下,您正在使用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); 
} 

页面以 “月” 圆满落幕选择。

+0

我很熟悉这个选择,但由于某种原因,这不工作,我尝试selectedByValue,ByText ...这就是为什么我想使用JavaScript –

+0

我有错误的方法调用(例如'selectByValue'而不是'selectByVisibleText') ...编辑它,并添加测试,我做了成功的工作。 –

+0

这是奇怪的原因,这是没有选择任何东西,我尝试byValue,ByVisibleText和没有什么 –

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