测试必须在时间、质量和成本之间获取一个平衡点,这是测试策略和测试设计的价值体现。

2.25 js处理多窗口

上一篇 / 下一篇  2018-06-12 10:55:22 / 个人分类:Python+Selenium2 WebDriver API

2.25 js处理多窗口

iD$A,MW f&q0前言51Testing软件测试网&C)X~2N1N f
在打开页面上链接的时候,经常会弹出另外一个窗口(多窗口情况前面这篇有讲解:Selenium2+python自动化13-多窗口、句柄(handle)),这样在多个窗口之间来回切换比较复杂,那么有没有办法让新打开的链接在一个窗口打开呢?51Testing软件测试网.T.y:V4\$^PV8Pvyr
要解决这个问题,得从html源码上找到原因,然后修改元素属性才能解决。很显然js在这方面是万能的,于是本篇得依靠万能的js大哥了。
1QO$p4UoH3X:Q(O/}j0一、多窗口情况
&ob8Y#d0H7s b0    1.在打baidu的网站链接时,会重新打开一个窗口51Testing软件测试网-Y4`:b@Z M2c
    (注意:我的百度页面是已登录状态,没登录时候是不会重新打开窗口的)

g8Tfh3h]$t0

R(m Z1O'Z*]0

/B)a\`h&o'O"W0

a\kr\km0二、查看元素属性:target="_blank"51Testing软件测试网n6p;^x;]&W
1.查看元素属性,会发现这些链接有个共同属性:target="_blank"

9Ui'R Mkq051Testing软件测试网a1|;^ v4h g/bc

51Testing软件测试网!o} h+a3T W:U

51Testing软件测试网9|"DoFc]n

三、去掉target="_blank"属性51Testing软件测试网[l%c }H0b.\f
1.因为此链接元素target="_blank",所以打开链接的时候会重新打开一个标签页,那么解决这个问题,去掉该属性就可以了。51Testing软件测试网*])l)y[(w7r p[3Z
2.为了验证这个问题,可以切换到html编辑界面,手动去掉“_blank”属性。51Testing软件测试网I5E{(E1I!x4q[

51Testing软件测试网e#d2l s!y B A

51Testing软件测试网$`$k&L'cxn }8t~"r^}

51Testing软件测试网TrP"hS+k

 

_5o.@+y9x]{2n%U0

qIs.qLr cm1@E;mK03.删除“_blank”属性后,重新打开链接,这时候会发现打开的新链接会在原标签页打开。

K2o'j3G w)d;j] _051Testing软件测试网8ET+_`l8_D

;blD^ o_pGd6v0

)gyW]h3EK-H0四、js去掉target="_blank"属性
K*{D"M9G5[-h01.第一步为了先登录,我这里加载配置文件免登录了(不会的看这篇:Selenium2+python自动化18-加载Firefox配置)51Testing软件测试网iy8A A6cY1HU
2.这里用到js的定位方法,定位该元素的class属性51Testing软件测试网 ^^@9I4p8G+?E
3.定位到该元素后直接修改target属性值为空51Testing软件测试网"O$V(J(RN'r

51Testing软件测试网4T'R)M'}n K;kIf*w

#t9Hn B:@,P]051Testing软件测试网$tc ]-A.jI:N

五、参考代码

vL/`K2w8c af du BP0
复制代码
#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()
复制代码

4@ Vmm'm)J4xYz0注意:并不是所有的链接都适用于本方法,本篇只适用于有这个target="_blank"属性链接情况。51Testing软件测试网gYQ \7V4Y#Ns

51Testing软件测试网.U@N+|-v;lF@

本篇仅提供解决问题的办法和思路,不要完全照搬代码!!!

VdE*rb#s;x0

TAG:

 

评分:0

我来说两句

Open Toolbar