WebDriver无法使用Java通过xpath找到元素 [英] WebDriver can't find element by xpath using Java

查看:252
本文介绍了WebDriver无法使用Java通过xpath找到元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下是使用Java的WebDriver代码片段:

The following is the snippet of WebDriver code using Java:

        WebDriver driver = new FirefoxDriver();
        driver.get("http://www.google.pl/");
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); 
        WebElement element = driver.findElement(By.name("q")); 
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
WebElement query = driver.findElement(By.xpath("//html/body/div[2]/span/center/form/table/tbody/tr/td[2]/div/div/input"));

query.sendKeys("asd");

执行代码后,我得到以下异常:

After execution of code I got the following exception:


线程main中的异常org.openqa.selenium.NoSuchElementException:无法找到元素:{method:xpath,selector:// html / body / div [2] / span / center / form / table / tbody / tr / td [2] / div / div / input}
系统信息:os.name:'Windows 7',os.arch:' x86',os.version:'6.1',java.version:'1.6.0_24'
驱动程序信息:driver.version:RemoteWebDriver
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:131)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorH andler.java:105)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:409)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java: 192)
at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:265)
at org.openqa.selenium.By $ 6.findElement(By.java:205)
org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:184)
at test.main(test.java:24)

Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"//html/body/div[2]/span/center/form/table/tbody/tr/td[2]/div/div/input"} System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.6.0_24' Driver info: driver.version: RemoteWebDriver 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:131) at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:105) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:409) at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:192) at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:265) at org.openqa.selenium.By$6.findElement(By.java:205) at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:184) at test.main(test.java:24)

我的代码有什么问题?

推荐答案

@ user729076:
xpath // html / body / div [2] / span / center / form / table / tbody / tr / td [2] / div / div / input你为谷歌文本字段写的不对。 Google文本字段的HTML如下所示:

@user729076: The xpath "//html/body/div[2]/span/center/form/table/tbody/tr/td[2]/div/div/input" you wrote for google text field is not right. The HTML for google text field is as follows:

<input type="text" value="" autocomplete="off" name="q" class="gbqfif" id="gbqfq" style="border: medium none; padding: 0pt; margin: 0pt; height: auto; width: 100%; background: url(&quot;data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D&quot;) repeat scroll 0% 0% transparent; position: absolute; z-index: 6; left: 0px; outline: medium none;" dir="ltr" spellcheck="false">

根据以上HTML,你可以使用id或xpath,如下所示:
By id:

Based on the above HTML, you can use simply id or xpath as below: By id:

driver.findElement(By.id("gbqfq")).sendKeys("some text");

按xpath:

driver.findElement(By.xpath("//input[@id='gbqfq']")).sendKeys("some text");

这篇关于WebDriver无法使用Java通过xpath找到元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆