51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4904|回复: 13
打印 上一主题 下一主题

selenium webdriver 测试其他主机上的页面定位不到元素

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2012-8-15 11:51:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
selenium webdriver测试本机上的页面完全正常,但测试其他主机上的页面总是定位不到元素,求帮助
使用的InternetExplorerDriver
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2012-8-16 11:39:40 | 只看该作者
其他主机页面,什么意思,你是远程调用,问题不详细
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2012-8-16 18:56:33 | 只看该作者
回复 2# hanlingzhi

比如我通过webdriver打开的是http://localhost:8080/project  这样就没问题
如果是 http://192.168.1.20:8080/project 就定位不到元素. 即使192.168.1.20是我本机的地址,也不行.
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2012-8-17 13:56:05 | 只看该作者
请更详细的描述.

比如,定位不到元素,是在哪一步定位出现问题?是全局还是特定.
你指定测试其他主机,仅仅是指URL上localhost用IP替换?
最好带上截图与出错提示。方便分析。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2012-8-20 17:04:56 | 只看该作者
代码:
  1. WebDriver driver = new InternetExplorerDriver();
  2. driver.get("http://127.0.0.1:8080/sys");
  3. System.out.println("Page title is: " + driver.getTitle());
  4. WebElement element_usr = driver.findElement(By.name("loginName"));
  5. element_usr.sendKeys("testuser");
  6. WebElement element_pwd = driver.findElement(By.name("loginPwd"));
  7. 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)
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2012-8-20 17:06:32 | 只看该作者
回复 4# WANDY

忘点"回复"你了,你看看上面我发的详细信息.
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2012-8-22 09:16:23 | 只看该作者
可能情况有很多,两种可能性比较大,
1、localhost是本地访问,ip地址访问是属于网络访问的,你所找的页面元素可能是javascript生成的,检查下ie的安全设置,可能被阻止了。
2、做一下等待操作,可能页面做了优化处理,一些元素不是同步载入的,特别是ajax的东西,写一段等待直到元素出现来试试看
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2012-8-22 09:20:43 | 只看该作者
本帖最后由 六月天 于 2012-8-22 09:23 编辑

等待的代码免费帮你写一下吧把你的第4、5行改成下面这个,等待元素出现,10秒还不出现就超时
  1. new WebDriverWait(driver, 10).until(new ExpectedCondition<WebElement>() {

  2.                         @Override
  3.                         public WebElement apply(WebDriver d) {
  4.                                 // TODO Auto-generated method stub
  5.                                 return d.findElement(By.name("loginName"));
  6.                         }
  7.                         
  8.                 }).sendKeys("testuser");
复制代码
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2012-8-23 10:17:26 | 只看该作者
回复 8# 六月天
等待还是不行.
浏览器设置看着相关的也都试过了,不行.

前台是EXTJS写的.
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2012-8-24 12:31:57 | 只看该作者
回复 9# qianliemao


    你直接用浏览器用ip地址访问打开相应的网页,右键查看网页源代码,看看能不能找到这个name="loginName"的元素
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2012-8-25 08:40:15 | 只看该作者
回复 10# 六月天
查看源文件,能找到的!
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2012-8-26 11:50:52 | 只看该作者
回复 10# 六月天
能找到
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2012-8-27 18:09:13 | 只看该作者
能手工找到那webdriver就一定能找到,应该是一些低级错误吧,仔细找找吧。
我自己试了一下,一点问题没有
回复 支持 反对

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2012-8-28 08:44:59 | 只看该作者
回复 13# 六月天
找到原因了,我们是浏览器设置了代理服务器,通过代理服务器能上部分技术网站. 就是设置代理服务器造成的,在浏览器中把代理服务器去掉,就能找到.
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-14 18:27 , Processed in 0.084777 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表