测试必须在时间、质量和成本之间获取一个平衡点,这是测试策略和测试设计的价值体现。
2.25 js处理多窗口
上一篇 /
下一篇 2018-06-12 10:55:22
/ 个人分类:Python+Selenium2 WebDriver API
2.25 js处理多窗口
6W!{)i?v0前言
^)G4Qi:|
Y*LL0在打开页面上链接的时候,经常会弹出另外一个窗口(多窗口情况前面这篇有讲解:Selenium2+python自动化13-多窗口、句柄(handle)),这样在多个窗口之间来回切换比较复杂,那么有没有办法让新打开的链接在一个窗口打开呢?51Testing软件测试网w-Di.l2h+j
{
要解决这个问题,得从html源码上找到原因,然后修改元素属性才能解决。很显然js在这方面是万能的,于是本篇得依靠万能的js大哥了。
,? Y4la1h[I
fM0一、多窗口情况
(uOm:ALI(u~6YQ0 1.在打baidu的网站链接时,会重新打开一个窗口
O9ri-S"{3s`7E0 (注意:我的百度页面是已登录状态,没登录时候是不会重新打开窗口的)51Testing软件测试网q*U4wyH&a#zXVM
51Testing软件测试网Wi"uaMGN;L0HW.A7k%|$hII
s
A:a3p051Testing软件测试网~_y!j0B XPO)jl二、查看元素属性:target="_blank"51Testing软件测试网:ZQ.} i~ nVd.L
1.查看元素属性,会发现这些链接有个共同属性:target="_blank"51Testing软件测试网m S7G#O4g I8D&{0\S
51Testing软件测试网$GXQ3Z9^T(BiTmhgD2^t051Testing软件测试网xLO'MNW$N三、去掉target="_blank"属性
JM&r&`X01.因为此链接元素target="_blank",所以打开链接的时候会重新打开一个标签页,那么解决这个问题,去掉该属性就可以了。51Testing软件测试网'Z7I@:UT$Ba;r
2.为了验证这个问题,可以切换到html编辑界面,手动去掉“_blank”属性。
(w8bbh-l,|:~7mzt0/[8D,v cF6k051Testing软件测试网%VB(k&E*f2E{
\ O G!n[s#o!z#S1yP?0 51Testing软件测试网/W#Y+[u{U
$ph.Q%~8w03.删除“_blank”属性后,重新打开链接,这时候会发现打开的新链接会在原标签页打开。
Qnj3bt)|5NG0z@3T/l(?@k0
T'yQ0i(iV9e.AC0|3o x?rv0四、js去掉target="_blank"属性
3RX$h+rap01.第一步为了先登录,我这里加载配置文件免登录了(不会的看这篇:Selenium2+python自动化18-加载Firefox配置)
i {V#y
A02.这里用到js的定位方法,定位该元素的class属性
LT"X.x#r^hh03.定位到该元素后直接修改target属性值为空
RN R5y/aJ|m051Testing软件测试网uHEj
N$T1x1\:y:br2O0,fg
?go'f)q&}0五、参考代码
R/q:btZ^9Y0R0#coding:utf-8fromseleniumimportwebdriverfromselenium.webdriver.common.keysimportKeysimporttime#加载配置文件免登录profileDir = r'C:\Users\Gloria\AppData\Roaming\Mozilla\Firefox\Profiles\1x41j9of.default'profile=webdriver.FirefoxProfile(profileDir)
driver=webdriver.Firefox(profile)
driver.get("https://www.baidu.com/")#修改元素的target属性js ='document.getElementsByClassName("mnav")[0].target="";'driver.execute_script(js)
driver.find_element_by_link_text("糯米").click()
:M;[-_ |x9P0注意:并不是所有的链接都适用于本方法,本篇只适用于有这个target="_blank"属性链接情况。51Testing软件测试网)c WzdIv6\'|:s9K\
?_
AhI S-Z%m0本篇仅提供解决问题的办法和思路,不要完全照搬代码!!!
} [2Az2s+~/DW0
收藏
举报
TAG: