- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 AShot
时遇到了一个奇怪的问题。Ashot
对于整个屏幕截图效果很好,但在选择性屏幕截图时则不好。在获取元素坐标时,它会在 CoordsProvider 类中抛出错误。我使用的是有缺陷的版本或产品吗?
public abstract class CoordsProvider implements Serializable {
public abstract Coords ofElement(WebDriver driver, WebElement element);
public Set<Coords> ofElements(WebDriver driver, Iterable<WebElement> elements) {
Set<Coords> elementsCoords = new HashSet<>();
for (WebElement element : elements) {
***Coords elementCoords = ofElement(driver, element); //fails here***
if (!elementCoords.isEmpty()) {
elementsCoords.add(elementCoords);
}
}
return Collections.unmodifiableSet(elementsCoords);
}
@SuppressWarnings("UnusedDeclaration")
public Set<Coords> ofElements(WebDriver driver, WebElement... elements) {
return ofElements(driver, Arrays.asList(elements));
}
@SuppressWarnings("UnusedDeclaration")
public Set<Coords> locatedBy(WebDriver driver, By locator) {
return ofElements(driver, driver.findElements(locator));
}
}
org.openqa.selenium.JavascriptException: javascript error: $ is not defined
(Session info: chrome=79.0.3945.130)
Build info: version: '3.14.0', revision: 'aacccce0', time: '2018-08-02T20:19:58.91Z'
System info: host: 'OPTIMIZEQ-LTP03', ip: '192.168.99.1', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '11.0.2'
Driver info: org.openqa.selenium.remote.RemoteWebDriver
Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 79.0.3945.130, chrome: {chromedriverVersion: 78.0.3904.105 (60e2d8774a81..., userDataDir: C:\Users\SHAILE~1.SIN\AppDa...}, goog:chromeOptions: {debuggerAddress: localhost:61006}, javascriptEnabled: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: XP, platformName: XP, proxy: Proxy(manual, http=localhos..., setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webdriver.remote.sessionid: f5a47b27537f019dacb73462732...}
Session ID: f5a47b27537f019dacb734627324a790
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) ~[na:na]
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187) ~[selenium-remote-driver-3.14.0.jar:na]
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122) ~[selenium-remote-driver-3.14.0.jar:na]
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49) ~[selenium-remote-driver-3.14.0.jar:na]
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158) ~[selenium-remote-driver-3.14.0.jar:na]
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548) ~[selenium-remote-driver-3.14.0.jar:na]
at org.openqa.selenium.remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:485) ~[selenium-remote-driver-3.14.0.jar:na]
at ru.yandex.qatools.ashot.util.JsCoords.findCoordsWithJquery(JsCoords.java:30) ~[ashot-1.5.2.jar:na]
at ru.yandex.qatools.ashot.coordinates.JqueryCoordsProvider.ofElement(JqueryCoordsProvider.java:13) ~[ashot-1.5.2.jar:na]
at ru.yandex.qatools.ashot.coordinates.CoordsProvider.ofElements(CoordsProvider.java:21) ~[ashot-1.5.2.jar:na]
at ru.yandex.qatools.ashot.AShot.takeScreenshot(AShot.java:115) ~[ashot-1.5.2.jar:na]
at ru.yandex.qatools.ashot.AShot.takeScreenshot(AShot.java:132) ~[ashot-1.5.2.jar:na]
at com.optq.main.util.SeleniumDriverUtility.captureAShotElement(SeleniumDriverUtility.java:563) ~[classes/:na]
欢迎任何 Ashot 的帮助或替代方案,请帮助我解决这个问题。
最佳答案
此错误消息...
org.openqa.selenium.JavascriptException: javascript error: $ is not defined
(Session info: chrome=79.0.3945.130)
Build info: version: '3.14.0', revision: 'aacccce0', time: '2018-08-02T20:19:58.91Z'
System info: host: 'OPTIMIZEQ-LTP03', ip: '192.168.99.1', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '11.0.2'
Driver info: org.openqa.selenium.remote.RemoteWebDriver
Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 79.0.3945.130, chrome: {chromedriverVersion: 78.0.3904.105 (60e2d8774a81..., userDataDir: C:\Users\SHAILE~1.SIN\AppDa...}, goog:chromeOptions: {debuggerAddress: localhost:61006}, javascriptEnabled: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: XP, platformName: XP, proxy: Proxy(manual, http=localhos..., setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webdriver.remote.sessionid: f5a47b27537f019dacb73462732...}
...暗示 ChromeDriver 无法与浏览上下文(即 Chrome 浏览器 session )交互。
<小时/>根据 ReferenceError: "x" is not defined 中的文档此错误意味着 DOM Tree 中的某处引用了一个不存在的变量。需要声明此变量,或者您需要确保它在当前脚本或作用域中可用。
Hint: When loading a library (such as jQuery), make sure it is loaded before you access library variables, such as "$". Put the tag that loads the library before your code that uses it.
根据讨论JavaScript/jQuery - “$ is not defined- $function()” error @Ketan 提到,当您尚未使 jQuery 可用于您的脚本时,就会发生此错误,即可能是 JavaScript/jQuery/AJAX尚未完成渲染HTML DOM .
<小时/>在这些情况下,有 3(三)种不同的方法可用于解决问题,如下所示:
jQuery 库是一个 JavaScript 文件,您可以使用 HTML <script>
引用它。 <head>
内的标签部分如下:
<head>
<script src="jquery-3.4.1.min.js"></script>
</head>
这会从源代码中获取 jQuery 代码。
Note: You do not have to include
type="text/javascript"
inside the<script>
tag as this is not required in HTML5. JavaScript is the default scripting language in HTML5 and in all modern browsers.
<小时/>You can find a detailed discussion in Selenium: How selenium identifies elements visible or not? Is is possible that it is loaded in DOM but not rendered on UI?
正如您所提到的,以下行失败:
Coords elementCoords = ofElement(driver, element);
此方法将参数之一(最后一个)作为元素,但在定义时,您似乎将其视为元素的列表,如下所示:
@SuppressWarnings("UnusedDeclaration")
public Set<Coords> ofElements(WebDriver driver, WebElement... elements) {
return ofElements(driver, Arrays.asList(elements));
}
这里的参数类型似乎有些不匹配。
<小时/>您还需要注意一些事情:
Supports Chrome version 78
Supports Chrome version 79
因此,JDK v8u111、Selenium Client v3.3.1、ChromeDriver v2.41 和 Chrome 之间存在明显不匹配浏览器 v79.0
<小时/>确保:
关于java - org.openqa.selenium.JavascriptException : javascript error: $ is not defined error taking coordinate screenshot with Ashot using ChromeDriver Selenium,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60167466/
我尝试在 selenium webdriver 中执行 java 脚本。该脚本存储在字符串变量中。并且变量被传递给executeScript()方法。运行脚本时我得到了 javascriptExcep
因此,如果我从回调方法中调用任何失败的 JUnit 断言,我都会收到此异常: Mar 12, 2012 11:24:41 AM com.gargoylesoftware.htmlunit.javasc
我在 Play 商店中有一个 React Native 应用程序,但在过去的一个月里它在某些设备上崩溃了 1000 次。我从未使用自己的设备或模拟器遇到过这种崩溃。我不确定如何调试它。 我启用了 Pr
我的 GWT 应用程序在某个时刻抛出 JavaScriptException。此问题仅发生在 Internet Explorer 中(IE 8 和运行 IE7 模式的 IE 8)。 堆栈轨迹如下: c
在我的 java 代码中,我尝试使用 HTMLUnit 库获取网页。我的代码很简单如下, public static void main(String [] args) throws FailingH
我正在尝试使用 python 和 selenium 自动化基于 Web 的 API (haxball api)有两个步骤 访问后https://html5.haxball.com/headless使用
我刚刚发布了一个使用 native 框架制作的 apk。 应用程序名义上运行,但功能中存在一些错误,导致其被迫关闭。 我尝试调试使用 android studio logcat 的错误,发现了这个异常
从 scala.js 0.6.x 迁移到 1.0 后,我有一些与 @JSGlobalScope 相关的代码损坏了。 我的用例是这样的: 有一个第 3 方库需要将一些全局变量设置为一个函数 加载并准备就
我有一个带有 WebView 控件的 UWP 应用程序。该应用程序运行正常,但 Visual Studio 2017 输出窗口显示了一堆错误,例如: Exception thrown at 0x75E
我正在尝试自动化 www.freeinvaders.org使用 Python 和 Selenium 的 Space Invaders 版本。实际游戏通过 HTML5 canvas 元素运行,该元素包裹
Google Play 堆栈跟踪将崩溃的原因指向: com.facebook.react.modules.core.JavascriptException: addWaypointDone i
使用 chrome 78 和 chromedriver78当我单击音频文件或尝试使用 Selenium 测试停止音频时,我收到此错误。 错误: org.openqa.selenium.Javascri
当我将以下代码放入 Chrome 的开发人员工具控制台时,它们工作正常。然而,当我将它们放入 Selenium 中时,我收到“参数列表后缺少 )”错误。我知道这可能意味着问题可能是由于语法不正确造成的
我在使用 AShot 时遇到了一个奇怪的问题。Ashot 对于整个屏幕截图效果很好,但在选择性屏幕截图时则不好。在获取元素坐标时,它会在 CoordsProvider 类中抛出错误。我使用的是有缺陷的
org.openqa.selenium.JavascriptException: SyntaxError: '' string literal 在通过 Selenium 使用 executeScrip
我一直在对一些网站进行网络抓取,以获取用于网络抓取练习的位置。这段代码让我了解酒店品牌的各个城市级别,但每当我在我的代码中使用 driver.execute_script("arguments[0].
我是一名优秀的程序员,十分优秀!