在Selenium 3

时间:2017-02-08 11:18:31

标签: java selenium xpath selenium-webdriver

我正在尝试使用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)

网站截图:: enter image description here

在屏幕截图中,您可以看到我正在尝试点击“建议方案按钮链接”

4 个答案:

答案 0 :(得分:1)

您可能没有等待页面完全加载。 尝试点击之前,请尝试等待页面完全加载。如果xpath是正确的,那么它必须是。

要进行测试,请使用Chrome..press F12转到网页,打开开发人员的工具。转到控制台选项卡,然后键入以下内容:$x("/html/body/div[5]/div[2]/div")检查结果。如果它返回正确的元素,那么你有正确的xpath。如果没有,请尝试以下方法:

  1. //div[@id='tile-8']

  2. //div[@id='tile-8']/span[text()='Suggestion Scheme']

  3. //span[text()='Suggestion Scheme']

  4. 如果选项1有效,只需使用By.id("tile-8")代替By.xpath()

答案 1 :(得分:0)

你没有提供任何帮助你解决问题的东西,我会给你点,因为现在它正在猜测游戏。

我能说什么:

  1. 你没有提供页面的完整html,只有按钮,它没有帮助。由于您使用的是Chrome,请不要使用firepath,而是使用以下内容:

    RMB(按钮) - &gt; inspect-&gt;突出显示部分的RMB-&gt;复制 - &gt;复制Xpath

    并检查xpath是否相同

  2. 如果它是相同的,它可能是由您使用的静态方法引起的,驱动程序不是那么智能按下某个东西后面的按钮,或者您必须向下滚动才能按下它。这就是我想要截图

  3. 的原因
      

    如果您需要向下滚动页面按下它,请在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选项的步骤:

  1. 打开chrome并导航到该应用程序。
  2. 按F12。
  3. 现在您将看到开发者控制台。单击ctrl+F并粘贴您编写的Xpath。如果Xpath正确,您将在yellow color中看到匹配的节点结果突出显示。
  4. 如果您有任何问题,请与我们联系。

答案 3 :(得分:0)

您可以生成Xpath,将“ ChroPath”安装到浏览器上。