selenium+java如何进行Q三方登录(续坑)
来源:互联网 发布:时时彩软件urssc 编辑:程序博客网 时间:2024/06/05 14:30
总结:
所用到的方法
(1)切换窗口
(2)切换frame
(3)id,class
个人背景:完全零基础,各方面都有点弱(html,java等)
测试环境:chrome+java+selenium
测试用例:百度网盘用第三方授权–QQ进行登录
测试步骤:
- 进入网页()
- 点击QQ图标,弹出QQ登录窗口
- 点击窗口内,左下方的帐号密码登录,出现帐号密码登录框
输入帐号和密码,点击授权并登录
以下是QQ快速登录的解决问题方法,基本一样,不再另外修改
如图:
遇到问题:
1、如何切换到这个窗口进行自动化操作?
解决方法:
百度了一大片,作为新手来说,目前只看到一点,要切换窗口
用了全部通用的代码
String currentWindow=driver.getWindowHandle(); String preWindowString = currentWindow; Set<String> handles=driver.getWindowHandles(); Iterator<String> it=handles.iterator(); while(it.hasNext()){ if(currentWindow==it.next()) continue; window= driver.switchTo().window(it.next()); }
当然,别忘了测试完成后,切回来,这点很重要。
driver.switchTo().window(preWindowString);
找到这个之后,
问题2,那么怎么判断,我切窗口成功了呢?
解决方法:定位一个窗口上的元素,判断它是否存在。
(1)判断右侧文字是否存在
先在firefox 用FirePath工具,定位元素一下,看一下属性
System.out.println(driver.findElement(By.xpath(".//*[@id='lay_main']")).isDisplayed());
给日志,看是否可以打印出true,如果成功打印,表明成功定位到窗口
(2)当然也可以,获取当前窗口的名称,看是否是第二个窗口的名称
问题3,到此时,左侧的登录还是不能定位到里面的元素,怎么办?
(1)自己使用FirePath工具,到处定位,XPath属性,CSS属性,以及其他,完全都不能定位到。
怎么办?怎么办?
这时,发现可以定位到整体
有个url这里写链接内容
另外新建一个页面,测试定位到页面的元素是否成功
WebElement qloginList=driver.findElement(By.id("qlogin_list")); List<WebElement> ql=qloginList.findElements(By.className("face")); ql.get(1).click();
成功定位到元素
把这些都集合到整个流程中,还是不行,感觉脑袋有坑,对于菜鸟来说,完全是折磨,
去QQ群里问了,还是回复上面的切换窗口,怎么办呢?
出门抽口烟,抬头望望天。
回来了,继续死磕。
猛然发现,我刚刚另外摘出的链接前方是iframe
立马百度,selenium iframe
茅塞顿开!!!
需要切换frame!!
driver.switchTo().frame(0);
加这么一句代码,试着运行了一下,成功了!!!
我的目的实现了。
天空都蓝了,周围都安静了,内心喜!
感想:
定位元素时,如果定位单个元素,直接定位不到,先看整体模块属性。整体属性,一定要仔细看,不能马虎。再一层层往下定位。
过程中,分析问题,需要再每句定位代码前方,加log判断是否运行。
进入一个坑后,会进行死循环,找朋友说明一下你的问题,顺一下思路,你也能发现自己问题所在。
以上,来自一个坑货新手。
- selenium+java如何进行Q三方登录(续坑)
- java+selenium Q&A
- QQ三方登录
- QQ三方登录
- 八、三方登录
- Android 三方登录
- selenium java实现登录
- Java Q&A For Selenium WebDriver
- 登录注册及第三方登录实现
- Android中进行微信第三方登录或分享如何将WXEntryActivity隐藏掉.
- iOS shareSDK进行第三方登录
- android 利用mob 进行第三方登录
- 什么是第三方登录,第三方登录如何选择
- Selenium Q&A
- Selenium+java分层(三)
- 第三方登录 java Google
- java实现第三方登录
- java 第三方登录之QQ登录
- 在case标签中使用非静态字段
- java实现求一个数组中有多少个子序列
- maven打包出现错误: Failed to clean project: Failed to delete
- JsonUtil.fromJson -- error
- Java基础
- selenium+java如何进行Q三方登录(续坑)
- javascript,jQuery自执行函数(匿名函数)为什么要把windows, jQuery, undefined作为参数传进去
- View的自由拖动(属性动画的实践之一)
- VT100控制码进行终端扩展显示
- Window环境下mysql读写分离以及主从配置(不错可以的)
- 第二讲 Controller配置汇总
- qml之qmldir文件的使用
- struts2 参数接收不到的原因
- 关于反爬虫,看这一篇就够了