我正在尝试使用Xpath
点击链接(看起来像一个标签按钮),但收到错误。
这是html
代码段:
<div id="tile_8" style="height: 93px; width: 26%; background-color: rgb(45, 87, 19); color: white; position: relative; float: left; margin: 10px; padding: 5px; cursor: pointer; z-index: 1; border: 2px solid white;" class="divAppList-shadow" onmouseover="mouseOvering(event,'8')" onmouseout="mouseOuting(event,'8')">
<b>
<span style="font-size:medium; z-index:1; color:white;">Suggestion Scheme</span>
</b><br>
<span style="text-align:justify; z-index:1;color:white;">There is always a better way of doing a thing. You only can suggest it for us to Improve.</span>
</div>
我尝试过以下代码:
driver.findElement(By.xpath("/html/body/div[5]/div[2]/div")).click();
这是错误:
线程“main”中的异常org.openqa.selenium.NoSuchElementException: 没有这样的元素:无法找到元素: { “方法”: “的xpath”, “选择器”: “/ HTML /体/格[5] / DIV [2] /格”}
(会议信息:chrome = 54.0.2840.87)(驱动信息: chromedriver = 2.27.440174 (e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform = Windows NT 10.0.10586 x86_64)(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:412毫秒 有关此错误的文档,请访问: http://seleniumhq.org/exceptions/no_such_element.html构建信息: 版本:'未知',修订版:'1969d75',时间:'2016-10-18 09:43:45 -0700'系统信息:主机:'tmlpnedtp061674',ip:'172.22.84.78',os.name:'Windows 10',os.arch:'amd64',os.version:'10 .0', java.version:'1.8.0_101'驱动程序信息: org.openqa.selenium.chrome.ChromeDriver功能 [{applicationCacheEnabled = false,rotate = false, mobileEmulationEnabled = false,networkConnectionEnabled = false, 铬= {chromedriverVersion = 2.27.440174 (e97a722caafc2d3a8b807ee115bfb307f7d2cfd9), userDataDir = C:\用户\ AMITPA〜1.TTL \应用程序数据\本地\ TEMP \ scoped_dir11224_7493}, takesHeapSnapshot = true,pageLoadStrategy = normal, databaseEnabled = false,handlesAlerts = true,hasTouchScreen = false, version = 54.0.2840.87,platform = XP,browserConnectionEnabled = false, nativeEvents = true,acceptSslCerts = true,locationContextEnabled = true, webStorageEnabled = true,browserName = chrome,takesScreenshot = true, javascriptEnabled = true,cssSelectorsEnabled = true, unexpectedAlertBehaviour =}]会话ID: 2bb2aa6d378f2c0f6ec720a9ee87068c ***元素信息:{using = xpath,value = / html / body / div [5] / div [2] / div} at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 方法)at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown 来自java.lang.reflect.Constructor.newInstance(未知来源) 在 org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:216) 在 org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:168) 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:635) 在 org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:368) 在 org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:473) 在org.openqa.selenium.By $ ByXPath.findElement(By.java:361)at at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:360) 在testProj001.CordysUpgradeDemo.main(CordysUpgradeDemo.java:19)
在屏幕截图中,您可以看到我正在尝试点击“建议方案按钮链接”
答案 0 :(得分:1)
您可能没有等待页面完全加载。 尝试点击之前,请尝试等待页面完全加载。如果xpath是正确的,那么它必须是。
要进行测试,请使用Chrome..press F12转到网页,打开开发人员的工具。转到控制台选项卡,然后键入以下内容:$x("/html/body/div[5]/div[2]/div")
检查结果。如果它返回正确的元素,那么你有正确的xpath。如果没有,请尝试以下方法:
//div[@id='tile-8']
//div[@id='tile-8']/span[text()='Suggestion Scheme']
//span[text()='Suggestion Scheme']
如果选项1有效,只需使用By.id("tile-8")
代替By.xpath()
答案 1 :(得分:0)
你没有提供任何帮助你解决问题的东西,我会给你点,因为现在它正在猜测游戏。
我能说什么:
你没有提供页面的完整html,只有按钮,它没有帮助。由于您使用的是Chrome,请不要使用firepath,而是使用以下内容:
RMB(按钮) - &gt; inspect-&gt;突出显示部分的RMB-&gt;复制 - &gt;复制Xpath
并检查xpath是否相同
如果它是相同的,它可能是由您使用的静态方法引起的,驱动程序不是那么智能按下某个东西后面的按钮,或者您必须向下滚动才能按下它。这就是我想要截图
如果您需要向下滚动页面按下它,请在driver.findElement()之前添加以下内容:
((JavascriptExecutor)driver).executeScript("scroll(0,250)"); //250 is value of page scrolled, depends how much
如上所述,我猜是因为你没有提供任何信息
答案 2 :(得分:0)
我可以看到你一直在使用firepath自动生成的Xpath。我想是的。
大多数情况下,这些Xpath会出现浏览器兼容性问题。开始编写动态Xpath,然后在脚本中使用该xpath,在Firebug或Chrome开发人员选项中检查xpath是否正确。
导航到chrome中的Developer选项的步骤:
ctrl+F
并粘贴您编写的Xpath。如果Xpath正确,您将在yellow color
中看到匹配的节点结果突出显示。 如果您有任何问题,请与我们联系。
答案 3 :(得分:0)
您可以生成Xpath,将“ ChroPath”安装到浏览器上。