当前位置: 首页 > 面试题库 >

尝试从Google搜索编辑框获取和打印数据,但收到InvalidElementStateException

濮阳功
2023-03-14
问题内容

我正在尝试在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());
}


 类似资料:
  • 问题内容: 我正在尝试在Google搜索编辑框中写一个字并捕获所有相关列表项并显示它。但是在这样做的时候,我得到了一个异常org.openqa.selenium.InvalidElementStateException:元素被禁用,因此可能无法用于操作。我经历了相同的异常相关问题,并根据他们更改了我的代码,但是它们都没有帮助。 我为此代码得到的异常 问题答案: 您选择了错误的元素。 使用下面的一个

  • 我试图从我的firebase数据库中检索数据,并在文本字段中打印一条语句,但我一直得到空值。我正在使用尝试到达我想要的子节点。我的textfield一直在说“欢迎null登录为null”我的Firebase数据库

  • //回收器和视图 //调用提取数据方法extractData(); //提取数据

  • 问题内容: 我正在尝试打印显示在Google搜索中的前5页链接。但是却收到StateElementReferenceException不知道哪一个出错了。 它可以打印到第二页,但是在我得到之后 问题答案: 有两件事: 您的脚本按预期打印前两页的结果。 当您第一次打电话时,它可以工作。 接下来,您将在的类型中存储10个页码。 第一次在循环中单击的 ,然后通过调用打印所有链接。 在循环内进行第二次迭代

  • 我有以下代码(参考下文)以ASC顺序显示来自mysql的结果 但是我得到了一个错误:“警告:mysqli_fetch_array()期望参数1是mysqli_result,布尔值在”中给出,它指向第38行,第38行是“while($row=mysqli_fetch_array($result))” 正如您所看到的,我正试图按ASC顺序按键获取结果,键行包含0 1 2 3 4这样的数字,因此结果应按

  • 我试图从这个结果页面的“Show Map”按钮中刮出纬度和经度数据:https://www.psychologytoday.com/us/therapists/60148/374863?sid=5d01e84909804&ref=2&tr=resultsName:https://www.psychologytoday.com/us/therapists/60148/374863?sid=5d01e