我使用Selenium RC与IE 6和XPath定位器非常慢.所以我试图看看javascript-xpath是否真的能加快速度.
但是找不到关于如何使用本机x路径库的足够/清晰的文档.
我正在做以下事情:
protected void startSelenium (String testServer, String appName, String testInBrowser){
selenium = new DefaultSelenium("localhost", 4444, "*" +testInBrowser, testServer+ "/"+ appName + "/");
echo("selenium instance created:"+selenium.getClass());
selenium.start();
echo("selenium instance started..." + testServer + "/" + appName +"/");
selenium.runScript("lib/javascript-xpath-latest-cmp.js");
selenium.useXpathLibrary("javascript-xpath");
selenium.allowNativeXpath("true");
}
Run Code Online (Sandbox Code Playgroud)
这导致XPath定位器的速度提高,但改进不一致.在某些运行中,定位器所用的时间减半; 而有时它随机高.
我在这里错过了任何配置步骤吗?如果能够取得成功的人能够分享他们的观点和方法,那将会很棒.
谢谢,Nirmal
解:
protected void startSelenium (String testServer, String appName, String testInBrowser){
selenium = new DefaultSelenium("localhost", 4444, "*" +testInBrowser, testServer+ "/"+ appName + "/");
echo("selenium instance created:"+selenium.getClass());
selenium.start();
echo("selenium instance started..." + testServer + …Run Code Online (Sandbox Code Playgroud) 3我正在使用selenium-server-standalone-2.33.0.jar来启动selenium测试套件.我有一个测试套件,在firefox和Internet Explorer中运行得非常好.当我尝试在Google Chrome中运行它时,它对当前用户运行正常.当我尝试从本地系统用户运行测试(打开以本地系统用户身份运行的命令窗口)时,测试失败,给我一个Windows注册表异常.这是我试图运行的命令:
java -jar selenium-server-standalone-2.33.0.jar -port 5885 -htmlsuite "*googlechrome" "http://www.google.com" "TestSuite.html" "results.html"
Run Code Online (Sandbox Code Playgroud)
这是我得到的例外:
HTML suite exception seen:
java.lang.RuntimeException: org.openqa.selenium.os.WindowsRegistryException: Problem while managing
the registry, OS Version '6.1', regVersion1 = false
Build info: version: '2.33.0', revision: '6c40c18', time: '2013-04-09 17:22:56'
System info: os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.6.0_38'
Driver info: driver.version: unknown
at org.openqa.selenium.server.browserlaunchers.BrowserLauncherFactory.createBrowserLauncher(
BrowserLauncherFactory.java:175)
at org.openqa.selenium.server.browserlaunchers.BrowserLauncherFactory.getBrowserLauncher(Bro
wserLauncherFactory.java:109)
at org.openqa.selenium.server.htmlrunner.HTMLLauncher.getBrowserLauncher(HTMLLauncher.java:7
9)
at org.openqa.selenium.server.htmlrunner.HTMLLauncher.runHTMLSuite(HTMLLauncher.java:139)
at org.openqa.selenium.server.htmlrunner.HTMLLauncher.runHTMLSuite(HTMLLauncher.java:198)
at org.openqa.selenium.server.SeleniumServer.runHtmlSuite(SeleniumServer.java:630)
at org.openqa.selenium.server.SeleniumServer.boot(SeleniumServer.java:305)
at org.openqa.selenium.server.SeleniumServer.main(SeleniumServer.java:245)
at org.openqa.grid.selenium.GridLauncher.main(GridLauncher.java:54)
Caused by: org.openqa.selenium.os.WindowsRegistryException: Problem …Run Code Online (Sandbox Code Playgroud) 我想知道是否有人熟悉使用selenium测试不同的浏览器版本.我知道您可以指定要测试的浏览器(使用*firefox或*iexplore)但是如果我安装了多个版本的firefox或IE,我想要一个测试来启动特定的Web浏览器版本,这样一个测试就可以运行IE7另一个可能会针对IE8运行.
目前,我的测试将始终针对我安装的任何默认浏览器版本运行.我意识到,如果我在多台机器上运行selenium,每个盒子都可能有不同的浏览器版本,这将解决我的问题,但我想知道我问的是什么(在一台机器上有多个浏览器版本)是可能的.
谢谢.
我需要发送一个带有一些修改过的标头的 Http 请求。在尝试Selenium.addCustomRequestHeader为 Selenium 2寻找与 Selenium RC 等效的方法几个小时后,我放弃并使用 JavaScript 来达到我的目的。我预计这会容易得多!
有人知道更好的方法吗?
这就是我所做的:
var test = {
"sendHttpHeaders": function(dst, header1Name, header1Val, header2Name, header2Val) {
var http = new XMLHttpRequest();
http.open("GET", dst, "false");
http.setRequestHeader(header1Name,header1Val);
http.setRequestHeader(header2Name,header2Val);
http.send(null);
}
}
Run Code Online (Sandbox Code Playgroud)
// ...
@Test
public void testFirstLogin() throws Exception {
WebDriver driver = new FirefoxDriver();
String url = System.getProperty(Constants.URL_PROPERTY_NAME);
driver.get(url);
// Using javascript to send http headers
String scriptResource = this.getClass().getPackage().getName()
.replace(".", "/") + "/javascript.js";
String script = getFromResource(scriptResource)
+ "test.sendHttpHeaders(\"" …Run Code Online (Sandbox Code Playgroud) 我有以下HTML代码:
<a href="/search/?p=2&q=move&mt=1"> 2 </a>
Run Code Online (Sandbox Code Playgroud)
我想得到href中包含的内容,即我正在寻找一个命令,它会给我"/ search /?p = 2&q = move&mt = 1"的值为href.
对于上面的查询,有人可以帮助我使用selenium中的相应命令和css定位器吗?
如果我有类似的东西:
<a href="/search/?p=2&q=move&mt=1"> 2 </a>
<a href="/search/?p=2&q=move&mt=2"> 3 </a>
Run Code Online (Sandbox Code Playgroud)
在这两个中,如果我要获取文本conatins为'2'的href的属性值,那么我的css定位器synatx将如何显示?
我的页面上有一个表,它应该包含某个元素.我可以通过名称识别表(它有一个唯一的名称),我也可以轻松识别该元素.我想断言该元素存在于表的行r,列c上.使用Selenium命令最干净的方法是什么?
备注:
div\div\table\div\tbody\td\tr[r]\td[c]代码中的所有内容).澄清:
如果单元格中的元素只是纯文本,那么我可以像这样检索该文本:
$this->getText("xpath=//table[@name='tableName']//tr[".$r."]//td[".$c."]"); (PHP)
但是如果单元格中的元素不仅仅是纯文本呢?如果元素是link(link=anchor)或button(//button[@type='button'])或图像或更复杂的东西怎么办?
我需要声明由该元素的定位器指定的元素驻留在给定的单元格中.
如何在Java中为selenium进行代理配置?
我正在连接到selenium:
Process p = Runtime.getRuntime().exec("java -jar lib/selenium-server.jar");
selenium = new DefaultSelenium("localhost", 4444, "*safari", "www.example.com");
Run Code Online (Sandbox Code Playgroud)
我想在没有用户名和密码凭据的情况下配置免费代理,以便在safari浏览器中运行selenium应用程序.
我已经尝试了下面的代码来为测试设置代理
System.setProperty("http:proxyHost","207.229.122.162");
System.setProperty("http:proxyPort","3128");
但上面的代码不能正常工作!! 它甚至接受null作为参数,
请建议我解决问题的方法!!
提前致谢 !!
所以我正在尝试在我正在开展的几个项目中引入selenium单元测试django 1.4.
运行单元测试的标准方法就是这样做./manage.py test,我用它django-ignoretests来排除我不想测试的特定django应用程序(根据需要).
但是,有没有办法配置我的项目,以便我可以决定在我想要的时候只运行selenium测试,并且只./manage.py test运行标准的单元测试.
分离和组织硒测试和标准单元测试有哪些最佳实践?
我想使用BrowserStack之类的browserfarms来运行UI测试.我们目前正在使用BS通过JsTestDriver运行单元测试.因此,启动服务器,让browserfarm创建的一堆浏览器连接到jstd服务器,然后执行测试.
不幸的是,我无法找到一种方法来编写与jstd一起使用的UI测试(单击某个按钮,键入内容等).
Selenium RC是一个旨在进行UI测试的框架,但它强制使用自己的浏览器实例:Selenium通过作为框架一部分的驱动程序启动自己的浏览器.
我想要的是将JsTestDriver概念与Selenium的UI测试相结合:使用Selenium编写测试,在本地主机上启动Selenium RC服务器,让一堆浏览器连接到在browserfarm上启动的服务器,然后执行UI试验.
这甚至可能吗?有没有其他方法可以使用JSTD运行UI测试?Selenium RC是否无法捕获未使用webdriver启动的浏览器?
提前致谢.
selenium-rc ×10
selenium ×8
javascript ×2
unit-testing ×2
css ×1
django ×1
html-table ×1
java ×1
php ×1
proxy ×1
ui-testing ×1
windows ×1
windows-7 ×1
xpath ×1