我正在尝试在Google搜索编辑框中写一个字并捕获所有相关列表项并显示它。但是在这样做的时候,我得到了一个异常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(false); window = new FirefoxDriver(profile); try{ window.get("https://www.google.co.in/"); window.manage().window().maximize(); window.findElement(By.id("gs_htif0")).sendKeys("Shantanu Nandan"); window.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS); List<WebElement> list=window.findElements(By.xpath("//td[@style='width: 100%;']/span")); window.manage().timeouts().implicitlyWait(10,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
我为此代码得到的异常
org.openqa.selenium.InvalidElementStateException: Element is disabled and so may not be used for actions Command duration or timeout: 47 milliseconds 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: d29ef567-95a8-47ce-bf84-c510cbb2756d 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:21) 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/anonymous7567378475668954944webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:8185) at <anonymous class>.DelayedCommand.prototype.checkPreconditions_(file:///C:/DOCUME~1/OMEGA/LOCALS~1/Temp/anonymous7567378475668954944webdriver-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/anonymous7567378475668954944webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:10831) at <anonymous class>.DelayedCommand.prototype.executeInternal_(file:///C:/DOCUME~1/OMEGA/LOCALS~1/Temp/anonymous7567378475668954944webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:10836) at <anonymous class>.DelayedCommand.prototype.execute/<(file:///C:/DOCUME~1/OMEGA/LOCALS~1/Temp/anonymous7567378475668954944webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:10778) Finally Block Executed ....
您选择了错误的元素。
使用下面的一个搜索文本框
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()); }