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

WebDriver无法使用Java通过xpath查找元素

子车飞鹏
2023-03-14
问题内容

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

        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");

执行代码后,出现以下异常:

线程“主”中的异常org.openqa.selenium.NoSuchElementException:无法找到元素:{“方法”:“
xpath”,“选择器”:” // 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:位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本地方法)处的sun.reflect.NativeConstructorAccessorImpl.newInstance(本地方法)处的RemoteWebDriver(位于sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知源)处)
org.openqa.selenium.remote处的java.lang.reflect.Constructor.newInstance(未知源)(位于org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:131))。org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:192)上的org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:409)上的ErrorHandler.throwIfResponseFailed(ErrorHandler.java:105)
org.openqa.selenium.By $
6.findElement(By.java:205)的org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:265)org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:265)
java:184)在test.main(test.java:24)在org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:184)处的openqa.selenium.By
$
6.findElement(By.java:205)在test.main(test.java:24)在org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:184)处的openqa.selenium.By
$ 6.findElement(By.java:205)在test.main(test.java:24)

我的代码有什么问题?


问题答案:

@ user729076:您为Google文本字段编写的xpath“ // html / body / div [2] / span / center /
form / table / tbody / tr / td [2] / div / div / input”不正确。Google文本的HTML字段如下:

<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,如下所示:按id:

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

通过xpath:

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


 类似资料:
  • 我想使用selenium单击一个按钮,并在站点的下拉日期选择器中选择该按钮。 我希望单击的按钮以黄色突出显示 http://covid.gov.pk/stats/ict 我正在使用以下xpath。 //*[@id=“datepicker-1361-7562-title”]/strong 这是我正在使用的代码 问题是,我可以点击下拉菜单上的其他元素,但不能点击这个按钮。 运行代码时遇到的错误。 ch

  • 请帮助我,我正在尝试选择一个图片,这是一个链接(一个网站上的培训师) 这是我的代码:

  • 我会收到以下错误消息: el=self.driver.find_element_by_xpath(element_query)文件“/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py”,第393行,在find_element_by_xpath中返回self.find_element(by=by.

  • 我是DOM查询的新手,我想知道是否可以通过Xpath直接查询DOM元素,类似于下面提到的代码? 谢谢

  • 我试图通过xpath获取一个输入元素,但是return语句是false。 当我试图获取标签(它是输入的唯一兄弟)时,它返回true。我也尝试通过输入类型[@type=“checkbox”]获取它,但也失败了。 null

  • HTML部分: 下面是我正在尝试的Xpath: 但是得到例外: 无效的选择器:由于以下错误,无法找到 xpath 表达式为 //li[文本()=//li[. = 'admin'] 的元素: 语法错误:未能对“Document”执行“evaluate”:字符串“//li[text()=//li[。= 'admin']'不是有效的XPath表达式。 精确查看UI和超文本标记语言代码: 该字段会自动完成