我在仪表板页面上遇到一个例外,因为AJax的大量调用如何在java的selenium web驱动程序中使用它

问题描述 投票:0回答:1

我正在尝试自动化一个Web基础应用程序,但由于巨大的Ajax调用,我得到一个例外,即使元素仍然存在于网页上我认为由于Dom代码在页面加载完成之前执行,即使我使用不同的等待方法但一切都是徒劳 :

Exception in thread "main" Starting ChromeDriver 2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f) on port 2530
Only local connections are allowed.
Exception in thread "main" org.openqa.selenium.ElementNotVisibleException: element not visible
  (Session info: chrome=64.0.3282.186)
  (Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 6.3.9600 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 17 milliseconds
Build info: version: '2.53.1', revision: 'a36b8b1', time: '2016-06-30 17:37:03'
System info: host: 'lt07', ip: '192.168.0.186', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_101'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f), userDataDir=C:\Users\NATASH~1\AppData\Local\Temp\scoped_dir1812_20595}, takesHeapSnapshot=true, pageLoadStrategy=normal, databaseEnabled=false, handlesAlerts=true, hasTouchScreen=false, version=64.0.3282.186, platform=WIN8_1, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true, setWindowRect=true, unexpectedAlertBehaviour=}]
Session ID: e7deaa74b472d878c9f9f99d5a77fe9a
    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:206)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678)
    at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:327)
    at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:85)
    at Cancel.main(Cancel.java:141)
java ajax selenium selenium-webdriver
1个回答
2
投票

错误说明了一切:

Exception in thread "main" org.openqa.selenium.ElementNotVisibleException: element not visible
  (Session info: chrome=64.0.3282.186)
  (Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 6.3.9600 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 17 milliseconds
Build info: version: '2.53.1', revision: 'a36b8b1', time: '2016-06-30 17:37:03'
System info: host: 'lt07', ip: '192.168.0.186', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_101'
Driver info: org.openqa.selenium.chrome.ChromeDriver

您的主要问题是您使用的二进制文件之间的版本兼容性如下:

  • 您正在使用chromedriver = 2.33
  • chromedriver=2.33的发行说明明确提到以下内容:

支持Chrome v60-62

  • 您正在使用chrome = 64.0
  • ChromeDriver v2.35的发行说明明确提到以下内容:

支持Chrome v62-64

  • 您的Selenium客户端版本是2016-06-30 17:37:03的2.53.1,差不多2年了。
  • 你的JDK版本是1.8.0_101,这很古老。

因此,JDK v8u101,Selenium Client v2.53.1,ChromeDriver版本(v2.33)和Chrome浏览器版本(v64.0)之间明显不匹配

  • 将JDK升级到最近的级别JDK 8u162
  • 将Selenium升级到当前水平Version 3.9.1
  • 将ChromeDriver升级到ChromeDriver v2.35级别。
  • 将Chrome版本保持在Chrome v64.x级别。 (as per ChromeDriver v2.35 release notes
  • 清理Project Workspace并仅使用所需的依赖项重建项目。
  • 使用CCleaner工具在执行测试套件之前和之后擦除所有操作系统。
  • 如果您的Chrome版本太旧,请通过Revo Uninstaller将其卸载并安装最新的GA和已发布的Chrome版本。
  • 执行你的@Test
© www.soinside.com 2019 - 2024. All rights reserved.