问个问题
selenium是如何捕捉弹出窗口的?PS,该弹出窗口没有id和name属性。。 这个问题在openQA 论坛上也很热门的。经常有人问。
如果你的这个弹出窗口是有一个link产生的话,比较容易解决,简单的说一下步骤。。
1.selenium.openWindow("_blank","winid"); //开一个空的弹出窗口。
2.然后修改那个link的 target 属性为"winid"
3.然后click 这个link
不知道够不够详细。
原帖由 okle 于 2008-12-23 09:15 发表 http://bbs.51testing.com/images/common/back.gif
selenium是如何捕捉弹出窗口的?
PS,该弹出窗口没有id和name属性。。 我有一个 关于 selenium rc 的问题
现在我自己在研究 seleniu rc 但是找了一段时间的资料 但是没有找到 如何运行 selenium-php-client-driver-1.0-beta-1 中的实例
不知道你那是不是用一些关于 seleniu rc 等等学习资料 可供参考呢 open source 的东西少的就是资料。我主要还是泡在openqa的论坛上。
另外我用的是java client
原帖由 alextowxm 于 2008-12-29 15:01 发表 http://bbs.51testing.com/images/common/back.gif
我有一个 关于 selenium rc 的问题
现在我自己在研究 seleniu rc 但是找了一段时间的资料 但是没有找到 如何运行 selenium-php-client-driver-1.0-beta-1 中的实例
不知道你那是不是用一些关于 seleniu rc 等等学 ... 2009年了。接触selenium 断断续续已经一年半多了。今年继续。 我是新手 顶下先 楼主,请教你一个入门级的问题。我用selenium+eclipse+Junit.用selenuimIDE录好脚本,在eclipse里建好工程,项目属性中引入selenium-java-client.jar selenium-java-client-driver-sources.jar和selenium-java-client-driver-tests.jar,以及Junit3.8.1
然后把脚本写到项目里,启动selenium-server,运行脚本,结果会出现这样的错误:
com.thoughtworks.selenium.SelenuimException:ERROR Server Exception:sessionID should not be null;has this session been started?
at com.thoughtworks.selenium.HttpCommandProcessor.doCommand(HttpCommandProcessor.java
at com.thoughtworks.selenium.DefaultSelenium.setContext(DefaultSelenium.java)
这是哪里出了问题?谢谢! 我把错误都贴出来:
com.thoughtworks.selenium.SeleniumException: ERROR Server Exception: sessionId should not be null; has this session been started yet?
at com.thoughtworks.selenium.HttpCommandProcessor.doCommand(HttpCommandProcessor.java:73)
at com.thoughtworks.selenium.DefaultSelenium.setContext(DefaultSelenium.java:574)
at com.thoughtworks.selenium.SeleneseTestCase.setUp(SeleneseTestCase.java:126)
at test56.test56.setUp(test56.java:8)
at junit.framework.TestCase.runBare(TestCase.java:125)
at com.thoughtworks.selenium.SeleneseTestCase.runBare(SeleneseTestCase.java:71)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) selenium server 开了没?
其实只需要导入 selenium-java-client.jar
原帖由 nosedive 于 2009-1-7 15:36 发表 http://bbs.51testing.com/images/common/back.gif
楼主,请教你一个入门级的问题。我用selenium+eclipse+Junit.用selenuimIDE录好脚本,在eclipse里建好工程,项目属性中引入selenium-java-client.jar selenium-java-client-driver-sources.jar和selenium-java-clien ... server开了,确实只用导入selenium-java-client-driver.jar的,我是病急乱投医,不过还是不行 代码贴上来看看。
原帖由 nosedive 于 2009-1-8 10:28 发表 http://bbs.51testing.com/images/common/back.gif
server开了,确实只用导入selenium-java-client-driver.jar的,我是病急乱投医,不过还是不行 你的错误证明你的sever根本没开起来! import junit.framework.TestCase;
import com.thoughtworks.selenium.*;
public class Test extends TestCase {
private Selenium selenium;
public void setUp() throws Exception {
String url = "http://www.google.com";
selenium = new DefaultSelenium("localhost", 4444, "*firefox", url);//4444 is default server port
selenium.start();
}
protected void tearDown() throws Exception {
// selenium.stop();
}
public void testGoogle() throws Throwable {
selenium.open("http://www.google.com/webhp?hl=en");
assertEquals("Google", selenium.getTitle());
selenium.type("q", "Selenium OpenQA");
assertEquals("Selenium OpenQA", selenium.getValue("q"));
selenium.click("btnG");
selenium.waitForPageToLoad("5000");
assertEquals("Selenium OpenQA - Google Search", selenium.getTitle());
}
}
这个脚本在别人的机器上跑是正常的,所以我想应该脚本没有什么问题 大家好,我刚刚用selenium IDE 出现了些问题,也是关于网页加载的问题,我一般都是在每个click前门加 wait for element present 这条命令,但是对有些按键似乎不管用,所以我加了pause 这个命令,来延长等待时间,但是我发现,我做的脚本文件在我的电脑上运行可以,但是换台电脑就会出现问题,我测试的网页是Ajax技术的,所以加载网页就会出现问题,关键是加pause这个命令,不清楚具体的等待时间,所以我想用wait for value ,或者 wait for condition 这样的命令,但是具体的格式并不是很清楚,网上也查了,不是很清楚wait for value 这个命令中patten 应该写些什么东西,对于wait for condition 这个命令中的script不是很了解,关键我刚刚毕业,而且本科不是学计算机专业的,没有接触过javascript ,各位大侠可以给我举个例子吗,例如我想等待一个id为OKButton__Button 的按键 ,wait for condition 和 wait for value这两个命令具体该怎么写,多谢! 把你下面这段代码里的 "localhost" 改成别人运行正常的机器名。然后运行试试。
selenium = new DefaultSelenium("localhost", 4444, "*firefox", url);//4444 is default server port
如果可以跑说明你 selenium server 有问题。
原帖由 nosedive 于 2009-1-8 14:11 发表 http://bbs.51testing.com/images/common/back.gif
import junit.framework.TestCase;
import com.thoughtworks.selenium.*;
public class Test extends TestCase {
private Selenium selenium;
public void setUp() throws Exception {
Strin ...
回复 55# 的帖子
一般用的较多的是wait for present,一个wait for visible 的例子。/**Wait for element to be visible within time out.
* @param sLocator element's locator
* @param timeout time out
*/
public void waitForVisible(String sLocator, int timeout){
log.info("Wait for "+sElementType+" visible");
for(int i=0;;i++){
if(i>=timeout){
try{
org.testng.Assert.fail("Wait for "+sElementType+" visible, Failed/Timeout @ "+sLocator);
}catch(AssertionError er){
log.error("Wait for "+sElementType+" visible, Failed/Timeout @ "+sLocator);
captureScreenshot();
throw er;
}
}
try {
if (sel.isVisible(sLocator)){
log.info("Wait for "+sElementType+" visible,OK");
break;
}
} catch (Exception e) {}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
和一个wait for value 例子
public boolean waitForValueToPresent(String value,int timeout){
log.info(this.sElementType + " waitForValueToPresent");
while(true){
if(timeout<0){
return false;
}
timeout--;
if(this.sel.getValue(this.sElementPath).equals(value)){
return true;
}else{
try{
Thread.sleep(1000);
}catch(Exception e){
e.printStackTrace();
}
}
}
} 谢谢楼上,问题解决了,出在两个地方。
1。我的脚本用的firefox,换成ie就可以了。听同事说这是selenium的一个BUG,如何解决我再研究下之后发上来
2.我用IE跑的时候出现了404页面无法打开的问题,设置了IE就可以了。
终于完成了搭建的第一步,以后和大家一起学习selenium,这个帖子真好,有啥问题都在这里讨论了!