取消
首页  »  Drissionpage实战,自动登录后新弹出浏览器窗口的处理  »  Drissionpage实战,自动登录后新弹出浏览器窗口的处理

Drissionpage实战,自动登录后新弹出浏览器窗口的处理

Drissionpage实战,自动登录后新弹出浏览器窗口的处理

主演:
鲍勃·克莱德宁 娜塔莎·埃斯卡 罗兰·巴克三世 凯特琳·麦克米伦 Kimberli Flores Carlo Mendez 朱莉·博斯特 
备注:
类型:
喜剧 冒险 恐怖 
导演:
查德·斯塔赫斯基 
别名:
更新:
24-05-11/年代:2011
地区:
西班牙
《Drissionpage实战,自动登录后新弹出浏览器窗口的处理》内容简介
Drissionpage实战,自动登录后新弹出浏览器窗口的处理

今天继续使用Drissionpage框架来实现内部系统的网页自动化处理,编码过程中碰到2个新问题,记录一下解决方法:

自动登录后新弹出浏览器窗口的获取

自动输入账号和密码登录的代码非常简单,如下所示:

from DrissionPage import WebPage,ChromiumOptionsco=ChromiumOptions()page=WebPage(chromium_options=co)page.set.window.max()page.get("http://xxx:8080")# 输入账号密码,自动登录page.ele("#userName").input("zhangsan")page.ele("#userPwd").input("123456")page.ele(".formsubmit").click()# 点击待办任务图标page.ele("#daiban").ele("tag:img").click()

但是在系统首页面点击待办任务图标时,一直报错:无法定位元素。根据浏览器开发者工具元素定位确认没有问题,调试跟踪发现点击待办任务图标时page对象中的html竟然是登录界面的脚本,才发现系统首页在新弹出的一个浏览器窗口中。

经过多次尝试,发现Drissionpage获取新弹出浏览器页面page的一种简便操作,直接get页面的url即可。修改代码如下:

# 点击待办任务图标page.get("http://xxx:8080/sword?ctrl=Mh001LoginCtrl_openWin")page.ele("#daiban").ele("tag:img").click()
具有多个类的网页元素的获取

另外,在处理具有多个类的网页元素时,精确匹配类名查找会定位不到,如以下类名:

class="sGrid_data_row_div sGrid_data_row_div_dan "

调试跟踪中发现,类名中间的空格发生变化导致,查找Drissionpage官网说明,有模糊匹配的方法,则可以轻松搞定。

items=page.eles('.:sGrid_data_row_div')

使用过程中感觉Drissionpage定位网页元素的方法齐全,写法简练。