2012-01-20 27 views
0

我想力ChromeDriver從選擇框中選擇一個項目。但是它沒有上線ChromeDriver無法存取權限選擇

Options = select.getOptions(); 

奇怪的是,在下面的代碼中,getText();方法打印出的所有項目中選擇:

productChoooser.getText() = ... 
    BASE 2013 
    BASE 2014 

,但我仍然得到例外...代碼是試圖點擊在選擇框中的項目:

List<WebElement> Options; 
    WebElement productChoooser = driver.findElement(By.id("mainForm:aucPanelId:1:product")); 
    System.out.println("productChoooser.getText() = " + productChoooser.getText()); 
    Select select = new Select(productChoooser); 
    Options = select.getOptions(); 
    String product = "BASE 2013"; 
    for (WebElement option:Options){ 
     System.out.println("option.getText() = " + option.getText()); 
     if(option.getText().equals(product)){ 
      option.click(); 
     } 
    } 

有誰知道如何避免它?我嘗試更新Chrome和chromedriver.exe到最新的版本,但沒有任何成功...

堆棧跟蹤:

org.openqa.selenium.WebDriverException:(警告:服務器未提供任何堆棧跟蹤信息) 命令持續時間或超時:47毫秒 生成信息:版本: '2.16.1',修訂版: '15405',時間: '2012-01-05十二時三十分12秒' 系統信息:os.name : 'Windows XP中',os.arch: '86',os.version: '5.1',java.version: '1.6.0_20' 驅動程序信息:driver.version:RemoteWebDriver 在sun.reflect.NativeConstructorAccessorImpl .newInstance0(本機方法) 在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 在java.lang.reflect.Constructor.newInstance( Constructor.java:513) 在org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:147) 在org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:113) 的組織。 openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:435) 在org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:231) 在org.openqa.selenium.remote.RemoteWebElement.findElements( RemoteWebElement.java:161) at org.openqa.selenium.remote.RemoteWebElement.findElementsByTagName(RemoteWebElement.java:227) at org.openqa.selenium.By $ ByTagName.findElements(By.java:313) at org.openqa.selenium.remote。 RemoteWebElement.findElements(RemoteWebElement.java:146) 在org.openqa.selenium.support.ui.Select.getOptions(Select.java:70) 在com.deutscheboerse.testing.RegulationTest.selectProduct(RegulationTest.java:53) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法) 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在org.junit .runners.model.FrameworkMethod $ 1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal。 runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) 在org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) 在org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) 在org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) 在org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:193) 在org.junit.runners.ParentRunner $ 1.schedule( ParentRunner。java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access $ 000(ParentRunner.java:42) at org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.junit.runner.JUnitCore.run(JUnitCore.java:157) at com。 intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:71) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:199) at com.intellij.rt.execution.junit.JUnitStarter。 main(JUnitStarter.java:62) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.N ativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

回答

1
 WebElement select = webDriver.findElement(selector); 
     List<WebElement> optionList = select.findElements(By.tagName("option")); 
     for (WebElement option : optionList) { 
      if (option.getText().trim().equalsIgnoreCase("your value")) { 
       option.click(); 
       break; 
      } 
     }