2016-07-26 78 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