selenium webdriver 测试其他主机上的页面定位不到元素
selenium webdriver测试本机上的页面完全正常,但测试其他主机上的页面总是定位不到元素,求帮助使用的InternetExplorerDriver 其他主机页面,什么意思,你是远程调用,问题不详细{:4_94:} 回复 2# hanlingzhi
比如我通过webdriver打开的是http://localhost:8080/project这样就没问题
如果是 http://192.168.1.20:8080/project 就定位不到元素. 即使192.168.1.20是我本机的地址,也不行. 请更详细的描述.
比如,定位不到元素,是在哪一步定位出现问题?是全局还是特定.
你指定测试其他主机,仅仅是指URL上localhost用IP替换?
最好带上截图与出错提示。方便分析。 代码:
WebDriver driver = new InternetExplorerDriver();
driver.get("http://127.0.0.1:8080/sys");
System.out.println("Page title is: " + driver.getTitle());
WebElement element_usr = driver.findElement(By.name("loginName"));
element_usr.sendKeys("testuser");
WebElement element_pwd = driver.findElement(By.name("loginPwd"));
element_pwd.sendKeys("testpwd");
这样运行是正常的.
但如果把第二行换成driver.get("http://192.168.99.8:8080/sys"); 就不行. 打开登录页面然后就不动了.提示无法找到元素.
错误提示:
org.openqa.selenium.NoSuchElementException: Unable to find element with name == loginName (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 297 milliseconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.21.0', revision: '16552', time: '2012-04-11 19:09:00'
System info: os.name: 'Windows XP', os.arch: 'x86', os.version: '5.1', java.version: '1.6.0_13'
Driver info: driver.version: RemoteWebDriver
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:175)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:128)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:459)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:227)
at org.openqa.selenium.remote.RemoteWebDriver.findElementByName(RemoteWebDriver.java:288)
at org.openqa.selenium.By$ByName.findElement(By.java:292)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:219)
at com.huawei.seleniumtest.testdriver.driver.testDriver(driver.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:81)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 回复 4# WANDY
忘点"回复"你了,你看看上面我发的详细信息. 可能情况有很多,两种可能性比较大,
1、localhost是本地访问,ip地址访问是属于网络访问的,你所找的页面元素可能是javascript生成的,检查下ie的安全设置,可能被阻止了。
2、做一下等待操作,可能页面做了优化处理,一些元素不是同步载入的,特别是ajax的东西,写一段等待直到元素出现来试试看 本帖最后由 六月天 于 2012-8-22 09:23 编辑
等待的代码免费帮你写一下吧:lol把你的第4、5行改成下面这个,等待元素出现,10秒还不出现就超时
new WebDriverWait(driver, 10).until(new ExpectedCondition<WebElement>() {
@Override
public WebElement apply(WebDriver d) {
// TODO Auto-generated method stub
return d.findElement(By.name("loginName"));
}
}).sendKeys("testuser"); 回复 8# 六月天
等待还是不行.
浏览器设置看着相关的也都试过了,不行.
前台是EXTJS写的. 回复 9# qianliemao
你直接用浏览器用ip地址访问打开相应的网页,右键查看网页源代码,看看能不能找到这个name="loginName"的元素 回复 10# 六月天
查看源文件,能找到的! 回复 10# 六月天
能找到 能手工找到那webdriver就一定能找到,应该是一些低级错误吧,仔细找找吧。
我自己试了一下,一点问题没有{:3_69:} 回复 13# 六月天
找到原因了,我们是浏览器设置了代理服务器,通过代理服务器能上部分技术网站. 就是设置代理服务器造成的,在浏览器中把代理服务器去掉,就能找到.
页:
[1]