2016-08-30 1 views
2

Ich verwende den folgenden Code nach der Aktualisierung der neuen selenium 3.0 beta JAR-Dateien. Jedoch in früherer Version von Selenium funktionierte es perfekt.kann die Dropdown-Option nach der Aktualisierung der JAR-Dateien auf Selen 3.0 nicht auswählen

I aktualisiert, wie es Fehler gab:

org.openqa.selenium.NoSuchElementException: Cannot locate option with index: 1

For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html Build info: version: 'unknown', revision: '2aa21c1', time: '2016-08-02 14:59:43 -0700' System info: host: 'GUR-ITD-8C', ip: '172.21.45.117', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_31' Driver info: driver.version: unknown

expedia.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
Select LineOfBusiness = new Select(expedia.findElement(By.id("lineOfBusiness"))); 
LineOfBusiness.selectByIndex(1); 
Assert.assertEquals(LineOfBusiness.getFirstSelectedOption().getText(), "HWW Sales"); 
+0

Teilen Sie Drop-Down-HTML als auch ?? Versuchen Sie, die Optionsgröße als 'System.out.println (LineOfBusiness .getOptions(). size());' zu drucken und lassen Sie uns das Ergebnis wissen .. :) –

+0

+0

Was ist die Ausgabe für diese 'System.out.println (LineOfBusiness.getOptions(). size());' ?? –

Antwort

0

Ich bin nicht sicher, was das Problem in Ihrem Fall ist Select-Klasse, aber wenn Sie eine alternative Lösung wollen von diesem zu befreien Fehler, können Sie versuchen, JavascriptExecutor wie folgt zu verwenden: -

public static String selectByIndex(WebDriver driver, WebElement select, int index) { 

     String javaScript = "var select = arguments[0]; " 
       + "select.options[arguments[1]].selected = true;" 
       + "return select.selectedOptions[0].text"; 

     return (String) ((JavascriptExecutor) driver).executeScript(javaScript, select, index); 
} 


WebElement select = expedia.findElement(By.id("lineOfBusiness")); 

Assert.assertEquals(selectByIndex(expedia, select, 1), "HWW Sales"); 
+1

Es funktioniert für mich danke aber ich denke es wird für die lineOfBusiness nur wenn ich andere auswählen muss dann mehr JavascriptExecutor verwenden. Recht ? –

+0

Ja, Sie können es in Betracht ziehen, wenn nichts funktioniert, weil die Verwendung von Javascript nicht gut für tatsächliche Automatisierungstests ist, aber Sie können es als eine Option nehmen, wenn nichts weitergeht .. Danke ... :) –

+1

Danke für Ihre Hilfe. Ja, ich verstehe, dass ich arbeiten werde, um den Fehler für eine Weile zu beheben, werde ich Javascriptxecutor verwenden –

Verwandte Themen