2016-07-26 14 views
0

Ich habe diese WebElement:Selen: wie ausgewähltes Attribut entfernen

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

Und ich möchte die ausgewählten attribute von Jul zu entfernen, und setzen Sie dieses Attribut unter verschiedenen Month. Dies ist, was habe ich versucht, die Attribute zu entfernen:

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

Warum wollen verwenden, können Sie die ‚ausgewählt‘ Attribut mit Selen entfernen ? Sie können es durch Javascript tun. – Harish

Antwort

1

Im Allgemeinen, wenn Sie ein Attribut entfernen mögen lieber die JavaScript removeAttribute Methode verwenden, als zu versuchen, setAttribute zu verwenden. In diesem Fall arbeiten Sie jedoch mit select und möchten ein anderes Element auswählen. Verwenden Sie einfach die in Select-Klasse in Selen wie folgt aufgebaut:

Select select = new Select(myElement); 
select.selectByVisibleText("Aug"); 

Ich habe eine HTML-Datei mit folgendem Inhalt und getestet es dann, dass auf.

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

lief dann den folgenden Code:

@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); 
} 

Die Seite erfolgreich mit "Dec" ausgewählt beendet.

+0

Ich kenne diesen Select, aber aus irgendeinem Grund funktioniert das überhaupt nicht, ich versuche selectedByValue, ByText ... deshalb möchte ich JavaScript verwenden –

+0

Ich hatte den falschen Methodenaufruf (zB 'selectByValue' anstelle von' selectByVisibleText') ... habe es zusammen mit dem Test hinzugefügt, den ich gemacht habe, wo es erfolgreich funktioniert hat. –

+0

das ist seltsam, weil dies nichts ausgewählt ist, versuche ich perValue, ByVisibleText und nichts –

0

eine Option deaktivieren Sie deselectBy Methoden

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(); 

und wählen einen anderen Monat

select.selectByVisibleText("Feb") 
// or 
select.selectByValue("2"); 

Siehe Select class

Verwandte Themen