Java 获取“美元”“未定义”;
我试图探索在测试中添加咆哮通知的特性。 这允许在测试执行时在屏幕上添加消息 我通过以下步骤尝试此方法: 电脑:视窗10 Selenium版本:2.53 浏览器:Firefox49 下面是我正在使用的脚本:Java 获取“美元”“未定义”;,java,jquery,selenium,firefox,jgrowl,Java,Jquery,Selenium,Firefox,Jgrowl,我试图探索在测试中添加咆哮通知的特性。 这允许在测试执行时在屏幕上添加消息 我通过以下步骤尝试此方法: 电脑:视窗10 Selenium版本:2.53 浏览器:Firefox49 下面是我正在使用的脚本: public class GrowlTest { static String JGROWL_SCRIPT = "http://cdnjs.cloudflare.com/ajax/libs/jquery-jgrowl/1.2.12/jquery.jgrowl.min.js";
public class GrowlTest {
static String JGROWL_SCRIPT = "http://cdnjs.cloudflare.com/ajax/libs/jquery-jgrowl/1.2.12/jquery.jgrowl.min.js";
static String JQUERY_SCRIPT = "http://code.jquery.com/jquery-1.11.1.min.js";
static String JGROWL_STYLE = "http://cdnjs.cloudflare.com/ajax/libs/jquery-jgrowl/1.2.12/jquery.jgrowl.min.css";
static FirefoxDriver driver;
public static void main(String [] args) throws InterruptedException
{
driver =new FirefoxDriver();
driver.manage().window().maximize();
//waitForJStoLoad();
driver.manage().deleteAllCookies();
growlNotification(driver,"hi this is inital test..", "try");
driver.get("http://www.amazon.com");
Thread.sleep(10000);
System.out.println("waiting for popup to come..");
driver.findElement(By.xpath("//*[contains(text(),'Stay')]")).click();
System.out.println("clicked on pop up..now waiting for notification...");
Thread.sleep(10000);
System.out.println("wait is completed..");
growlNotification(driver,"Hi First try","first:");
Thread.sleep(2000);
growlNotification(driver,"Hi second try","second:");
Thread.sleep(2000);
growlNotification(driver,"Hi third try","third:");
Thread.sleep(2000);
growlNotification(driver,"Hi fourth try","fourth:");
Thread.sleep(2000);
driver.quit();
try {
Thread.sleep(5000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private static void growlNotification(WebDriver driver, String msg, String header) throws InterruptedException
{
FirefoxDriver js=(FirefoxDriver) driver;
js.executeScript("if (!window.jQuery) {var jquery = document.createElement('script'); jquery.type = 'text/javascript';jquery.src = 'https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js';document.getElementsByTagName('head')[0].appendChild(jquery)}");
//TODO Add check for existing jQuery on page
js.executeScript( "var jq = document.createElement('script'); jq.type = 'text/javascript'; jq.src = '" +
JQUERY_SCRIPT + "'; document.getElementsByTagName('head')[0].appendChild(jq);" );
js.executeScript( "$.getScript(\"" + JGROWL_SCRIPT + "\");" );
js.executeScript( "var lnk = document.createElement('link'); lnk.rel = 'stylesheet'; lnk.href = '" +
JGROWL_STYLE + "'; lnk.type = 'text/css'; document.getElementsByTagName('head')[0].appendChild(lnk);" );
js.executeScript( "$.jGrowl('" + msg + "', { header: '" + header + "' });" );
}
}
执行此操作时,我得到以下错误:
正在等待弹出窗口的到来。。单击弹出窗口..正在等待
通知。。。等待已完成。。线程“main”中出现异常
org.openqa.selenium.WebDriverException:$.jGrowl不是一个函数
命令持续时间或超时:17毫秒生成信息:版本:
“2.53.0”,修订版:“35ae25b”,时间:“2016-03-15 16:57:40”系统
信息:主机:'mkarthik-WX-1',ip:'192.168.0.106',os.name:'Windows
10',os.arch:'amd64',os.version:'10.0',java.version:'1.8.0_73'
驱动程序信息:org.openqa.selenium.firefox.firefox驱动程序功能
[{applicationCacheEnabled=true,rotatable=false,handlesAlerts=true,
databaseEnabled=true,版本=40.0,平台=WINDOWS,
nativeEvents=false,acceptSslCerts=true,WebStorage Enabled=true,
locationContextEnabled=true,browserName=firefox,
takesScreenshot=true,javascriptEnabled=true,
CSSSelectorEnabled=true}]会话ID:
8249259c-1211-4472-b52f-fc0471061816 at
sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
在
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
在
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:422)
在
org.openqa.selenium.remote.ErrorHandler.CreateTrowable(ErrorHandler.java:206)
在
org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
在
org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678)
在
org.openqa.selenium.remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:577)
在com.tests.GrowlTest.growlNotification(GrowlTest.java:74)中
com.tests.GrowlTest.main(GrowlTest.java:38)由以下原因引起:
org.openqa.selenium.WebDriverException:$.jGrowl不是一个函数
构建信息:版本:'2.53.0',修订版:'35ae25b',时间:'2016-03-15
16:57:40“系统信息:主机:'mkarthik-WX-1',ip:'192.168.0.106',
os.name:'Windows 10',os.arch:'amd64',os.version:'10.0',
java.version:'1.8.0_73'
但是,当我执行以下代码时,相同的脚本也会起作用:
package com.tests;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
import com.google.common.base.Predicate;
public class GrowlTest {
static String JGROWL_SCRIPT = "http://cdnjs.cloudflare.com/ajax/libs/jquery-jgrowl/1.2.12/jquery.jgrowl.min.js";
static String JQUERY_SCRIPT = "http://code.jquery.com/jquery-1.11.1.min.js";
static String JGROWL_STYLE = "http://cdnjs.cloudflare.com/ajax/libs/jquery-jgrowl/1.2.12/jquery.jgrowl.min.css";
static FirefoxDriver driver;
public static void main(String [] args) throws InterruptedException
{
driver =new FirefoxDriver();
driver.manage().window().maximize();
//waitForJStoLoad();
driver.manage().deleteAllCookies();
growlNotification(driver,"hi this is inital test..", "try");
driver.get("http://www.amazon.in");
Thread.sleep(10000);
System.out.println("waiting for popup to come..");
driver.findElement(By.xpath("//*[contains(text(),'Stay')]")).click();
System.out.println("clicked on pop up..now waiting for notification...");
Thread.sleep(10000);
System.out.println("wait is completed..");
growlNotification(driver,"Hi First try","first:");
Thread.sleep(2000);
growlNotification(driver,"Hi second try","second:");
Thread.sleep(2000);
growlNotification(driver,"Hi third try","third:");
Thread.sleep(2000);
growlNotification(driver,"Hi fourth try","fourth:");
Thread.sleep(2000);
driver.quit();
try {
Thread.sleep(5000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private static void growlNotification(WebDriver driver, String msg, String header) throws InterruptedException
{
FirefoxDriver js=(FirefoxDriver) driver;
js.executeScript("if (!window.jQuery) {var jquery = document.createElement('script'); jquery.type = 'text/javascript';jquery.src = 'https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js';document.getElementsByTagName('head')[0].appendChild(jquery)}");
//TODO Add check for existing jQuery on page
js.executeScript( "var jq = document.createElement('script'); jq.type = 'text/javascript'; jq.src = '" +
JQUERY_SCRIPT + "'; document.getElementsByTagName('head')[0].appendChild(jq);" );
js.executeScript( "$.getScript(\"" + JGROWL_SCRIPT + "\");" );
js.executeScript( "var lnk = document.createElement('link'); lnk.rel = 'stylesheet'; lnk.href = '" +
JGROWL_STYLE + "'; lnk.type = 'text/css'; document.getElementsByTagName('head')[0].appendChild(lnk);" );
js.executeScript( "$.jGrowl('" + msg + "', { header: '" + header + "' });" );
}
}
请帮助并建议需要做什么
感谢和问候,
Karthik我的猜测是,在js.executeScript()调用之间,您需要休息一会儿,以便为正在调用的javascript提供加载时间。如果你看一下,你说的works脚本在操作之间有各种休眠,可能允许加载和处理东西。Nope…用相同的代码尝试过。它不起作用,得到相同的错误:线程“main”中出现异常org.openqa.selenium.WebDriverException:$.jGrowl不是函数命令持续时间或超时:16毫秒构建信息:版本:'2.53.0',修订版:'35ae25b',时间:'2016-03-15 16:57:40'我添加了所需文件1)2)3)在控制台中尝试$.jGrowl('hi')时工作正常。但当通过java程序执行时,我得到“$未定义”@stanlemon