51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4233|回复: 2
打印 上一主题 下一主题

selenium webdriver定位ajax网站iframe内元素出错

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2014-5-12 11:22:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. import org.openqa.selenium.By;  
  2. import org.openqa.selenium.WebDriver;   
  3. import org.openqa.selenium.firefox.FirefoxDriver;


  4. public class FirstExample {  
  5.    
  6.     public static void main(String[] args) throws Exception {  
  7.         WebDriver driver = new FirefoxDriver();  
  8.         driver.get("http://192.168.2.39/qlikview/index.htm");
  9.         Thread.sleep(2000);
  10.         driver.findElement(By.id("userName")).clear();
  11.         driver.findElement(By.id("userName")).sendKeys("test");
  12.         driver.findElement(By.id("pass")).clear();
  13.         driver.findElement(By.id("pass")).sendKeys("test");
  14.         driver.findElement(By.className("loginSubmit")).click();
  15.         driver.get("http://192.168.2.39/QvAJAXZfc/opendoc.htm?document=QlikSales%20Fashion%20Phase%202%201104.qvw&host=QVS@view");
  16.         driver.switchTo().frame("popupFrame1");
  17.         driver.findElement(By.tagName("userid")).sendKeys("admin");
  18.         driver.findElement(By.tagName("password")).sendKeys("admin");
  19.         driver.switchTo().defaultContent();
  20.         driver.close();
  21.     }  
复制代码
出错如下:Exception in thread "main" org.openqa.selenium.UnhandledAlertException: Modal dialog present: Login Failed
Build info: version: '2.41.0', revision: '3192d8a', time: '2014-03-27 17:18:15'
System info: host: 'yangxi', ip: '192.168.0.116', os.name: 'Windows 8', os.arch: 'amd64', os.version: '6.2', java.version: '1.6.0_43'
Session ID: 5af9ca81-bcd3-4501-9262-588c6649a00d
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities [{platform=XP, acceptSslCerts=true, javascriptEnabled=true, browserName=firefox, rotatable=false, locationContextEnabled=true, version=29.0.1, cssSelectorsEnabled=true, databaseEnabled=true, handlesAlerts=true, browserConnectionEnabled=true, nativeEvents=false, webStorageEnabled=true, applicationCacheEnabled=true, takesScreenshot=true}]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193)
        at org.openqa.selenium.remote.ErrorHandler.createUnhandledAlertException(ErrorHandler.java:174)
        at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:141)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:595)
        at org.openqa.selenium.remote.RemoteWebDriver$RemoteTargetLocator.frame(RemoteWebDriver.java:862)
        at FirstExample.main(FirstExample.java:19)

登陆的用户名密码都没有错误啊,手动输入没问题,但是自动化输入就是没办法实现。求指教。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2014-5-20 17:28:46 | 只看该作者
从错误信息来看,有个模态窗口你没有处理。

试下:webdirver.switchTo.alert();
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2014-6-16 14:46:39 | 只看该作者
本帖最后由 liuliu022004 于 2014-6-16 15:53 编辑

selenium buildin关键字有一个 switch_to_frame()
必须一层一层select到元素所在的iframe才能找到元素
view source找到它所在的iframe

看不懂java猜测应该和我以前一个问题

例如:
self._current_browser()。switch_to_default_content()
self._current_browser().switch_to_frame(“firstleveliframe”)
self._current_browser().switch_to_frame(“secondleveliframe”)
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-22 00:08 , Processed in 0.074325 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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