Selenium2+python自动化29-js处理多窗口

前言html

在打开页面上连接的时候,常常会弹出另一个窗口(多窗口状况前面这篇有讲解:Selenium2+python自动化13-多窗口、句柄(handle)),这样在多个窗口之间来回切换比较复杂,那么有没有办法让新打开的连接在一个窗口打开呢?java

要解决这个问题,得从html源码上找到缘由,而后修改元素属性才能解决。很显然js在这方面是万能的,因而本篇得依靠万能的js大哥了。node

1、多窗口状况python

    1.在打baidu的网站连接时,会从新打开一个窗口web

    (注意:个人百度页面是已登陆状态,没登陆时候是不会从新打开窗口的)学习

 

2、查看元素属性:target="_blank"网站

1.查看元素属性,会发现这些连接有个共同属性:target="_blank"spa

3、去掉target="_blank"属性htm

1.由于此连接元素target="_blank",因此打开连接的时候会从新打开一个标签页,那么解决这个问题,去掉该属性就能够了。blog

2.为了验证这个问题,能够切换到html编辑界面,手动去掉“_blank”属性

3.删除“_blank”属性后,从新打开连接,这时候会发现打开的新连接会在原标签页打开。

4、js去掉target="_blank"属性

1.第一步为了先登陆,我这里加载配置文件免登陆了(不会的看这篇:Selenium2+python自动化18-加载Firefox配置

2.这里用到js的定位方法,定位该元素的class属性

3.定位到该元素后直接修改target属性值为空

5、参考代码

# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

# 加载配置文件免登陆
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()

 

注意:并非全部的连接都适用于本方法,本篇只适用于有这个target="_blank"属性连接状况

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

学习过程当中有遇到疑问的,能够加selenium(python+java) QQ群交流:646645429

 

《selenium+python高级教程》已出书:selenium webdriver基于Python源码案例

(购买此书送对应PDF版本)

 

相关文章
相关标签/搜索