首页 > 解决方案 > 当我从 IDE 复制 xpath 并在我的代码中使用时,无法识别 xpath

问题描述

我正在尝试使用 selenium 定位器查找元素,但无法找到使用所有定位器尝试的元素

在尝试通过所有定位器查找元素后,我 sed selenium IDE 并从 IDE 复制 xpath 并使用但仍然收到相同的错误消息

System.setProperty("IEDriverServer", "C:\\Users\\cc301438\\Downloads\\Browser-Setup\\Drivers\\IEDriverServer_x64_3.14.0\\IEDriverServer.exe");

WebDriver driver=new InternetExplorerDriver();
            driver.get("https://netbank.nedsecure.co.za/Browser/Brands/Nedbank/Logon/Logon.aspx");

        driver.findElement(By.id("ProfileId")).sendKeys("46732258");
        driver.findElement(By.id("PinNo")).sendKeys("8026");
        driver.findElement(By.id("Password")).sendKeys("test123");
        driver.findElement(By.xpath("img[@id='LoginPagelet_LogonID']")).click();

        driver.quit();

错误

线程“main”中的异常 org.openqa.selenium.NoSuchElementException: Unable to find element with xpath == img[@id='LoginPagelet_LogonID'] (警告:服务器未提供任何堆栈跟踪信息)有​​关此错误的文档,请访问: http ://seleniumhq.org/exceptions/no_such_element.html构建信息:版本:'2.3.0',修订:'未知',时间:'2011-08-03 19:22:45' 系统信息:os.name:'Windows 10',os.arch:'amd64' , os.version: '10.0', java.version: '1.8.0_151' 驱动程序信息: driver.version: RemoteWebDriver at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java :62) 在 org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler. java:131) 在 org.openqa.selenium 的 org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:105)。remote.RemoteWebDriver.execute(RemoteWebDriver.java:405) 在 org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:193) 在 org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:266)在 org.openqa.selenium.By$ByXPath.findElement(By.java:323) 在 org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:185) 在 com.firstTest.SimpleDemo.Login.main(Login .java:33)firstTest.SimpleDemo.Login.main(Login.java:33)firstTest.SimpleDemo.Login.main(Login.java:33)

标签: selenium

解决方案


@user3686241,嗨。使用以下最佳 XPath 定位器实践为您附加 PDF: xpath 定位器最佳实践,第 1 部分 xpath 定位器最佳实践,第 2 部分

所以在你的情况下,正确的定位器应该看起来:.....

 driver.findElement(By.id("Password")).sendKeys("test123");
 driver.findElement(By.xpath("//img[@id='LoginPagelet_LogonID']")).click();

 driver.quit();

两个//意思 - 查找 HTML 页面上的所有元素,其中 img 标记和ID属性等于LoginPagelet_LogonID


推荐阅读