Google editboix提供InvalidElementStateException:元素已禁用,因此不能用于操作命令持续时间

时间:2014-05-30 17:06:50

标签: java exception selenium selenium-webdriver selenium-ide

我正在尝试在谷歌搜索编辑框中写一个单词并捕获所有相关的列表项并显示它。但是这样做我得到了一个例外org.openqa.selenium.InvalidElementStateException:元素被禁用,因此不能用于操作。我经历了相同的异常相关问题,并根据他们改变了我的代码,但没有一个帮助。

import java.util.List;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.firefox.FirefoxProfile;

 public class AutoIt {
   public static void main(String[] args){
  WebDriver window;
  FirefoxProfile profile = new FirefoxProfile();
  profile.setEnableNativeEvents(true);
  window = new FirefoxDriver(profile);
  window.manage().timeouts().implicitlyWait(40,TimeUnit.SECONDS);
  WebElement wb;
try{
window.get("https://www.google.co.in/");
window.manage().window().maximize();
wb=window.findElement(By.xpath(".//input[@id='gs_htif0']"));
if(wb.isEnabled()) {
    System.out.println("Enable");
}//if
else{
    System.out.println("Disable");
}//else
wb.click();
wb.sendKeys("Shantanu Nandan");
window.manage().timeouts().implicitlyWait(40,TimeUnit.SECONDS);
List<WebElement> list=window.findElements(By.xpath("//td[@style='width: 400%;']/span"));
window.manage().timeouts().implicitlyWait(40,TimeUnit.SECONDS);
for(WebElement data:list){
    System.out.println(data.getAttribute("value"));

 }//for
}//try
catch(Exception e){
System.out.println("Got a exception");
    e.printStackTrace();
    window.close();
}//catch
finally{
    System.out.println("Finally Block Executed ....");
    window.close();
    window.quit();
}//finally
   }//main
 }//class
Exception Which i got-
   org.openqa.selenium.InvalidElementStateException: Element is disabled and so may not be used for actions
   Command duration or timeout: 40.06 seconds
   Build info: version: '2.39.0', revision: 'ff23eac', time: '2013-12-16 16:12:12'
   System info: host: 'omega-d52b83806', ip: '10.0.0.4', os.name: 'Windows XP', os.arch: 'x86',   os.version: '5.1', java.version: '1.7.0_45'
    Session ID: aa82373a-1d12-4000-b89a-2238c83d4e06
  Driver info: org.openqa.selenium.firefox.FirefoxDriver
  Capabilities [{platform=XP, acceptSslCerts=true, javascriptEnabled=true, cssSelectorsEnabled=true, databaseEnabled=true, browserName=firefox, handlesAlerts=true, browserConnectionEnabled=true, webStorageEnabled=true, nativeEvents=false, rotatable=false, locationContextEnabled=true, applicationCacheEnabled=true, takesScreenshot=true, version=29.0.1}]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554)
at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:268)
at org.openqa.selenium.remote.RemoteWebElement.sendKeys(RemoteWebElement.java:89)
at AutoIt.main(AutoIt.java:28)
   Caused by: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: Element is disabled and so may not be used for actions
   Build info: version: '2.39.0', revision: 'ff23eac', time: '2013-12-16 16:12:12'
   System info: host: 'omega-d52b83806', ip: '10.0.0.4', os.name: 'Windows XP', os.arch: 'x86',   os.version: '5.1', java.version: '1.7.0_45'
    Driver info: driver.version: unknown
at <anonymous class>.fxdriver.preconditions.enabled(file:///C:/DOCUME~1/OMEGA/LOCALS~1/Temp/anonymous4150390975453553730webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:8185)
at <anonymous class>.DelayedCommand.prototype.checkPreconditions_(file:///C:/DOCUME~1/OMEGA/LOCALS~1/Temp/anonymous4150390975453553730webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:10814)
at <anonymous class>.DelayedCommand.prototype.executeInternal_/h(file:///C:/DOCUME~1/OMEGA/LOCALS~1/Temp/anonymous4150390975453553730webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:10831)
at <anonymous class>.fxdriver.Timer.prototype.setTimeout/<.notify(file:///C:/DOCUME~1/OMEGA/LOCALS~1/Temp/anonymous4150390975453553730webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:396)

1 个答案:

答案 0 :(得分:3)

您选择了错误的元素。

使用下面的搜索文本框

wb=window.findElement(By.name("q"));

使用以下内容获取输出建议。

List<WebElement> list = window.findElements(By.className("gsq_a"));

要从列表中获取值,请使用getText()方法而不是getAttribute()。

for (WebElement data : list) {
   System.out.println(data.getText());
}