游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

Selenium4Python3系列(七)Iframe常见控

  前言
  突然,想把所有之前未更新的常用Api操作、演示写出来,算是对API的一种完结吧。
  下面按照Api模块来做逐一介绍。一、iframe操作
  iframe识别:
  img1。png
  语法:
  driver。switchto。frame(方式)1、常见处理方法三种index:下标name:id或name属性的值webelement:元素2、通过下标进入
  进入第一个iframedriver。switchto。frame(0)3、通过id或name属性的值进入
  通过id或name属性的值进入指定的iframedriver。switchto。frame(iframe)driver。switchto。frame(iframeName)4、通过iframe元素进入iframe
  通过iframe元素进入指定iframeiframedriver。findelement(By。ID,iframe)driver。switchto。frame(iframe)
  完整案例代码如下:fromseleniumimportwebdriverfromselenium。webdriver。common。byimportByfromwebdrivermanager。chromeimportChromeDriverManagerdriverwebdriver。Chrome(ChromeDriverManager()。install())driver。get(http:localhost:8080iframeDemo。html)通过下标进入framedriver。switchto。frame(0)通过id或name属性的值进入指定的iframedriver。switchto。frame(iframe)driver。switchto。frame(iframeName)通iframe元素进入iframeiframedriver。findelement(By。ID,iframe)driver。switchto。frame(iframe)driver。findelement(By。ID,user)。clear()driver。findelement(By。ID,user)。sendkeys(thisisaframetest!)print(driver。findelement(By。ID,user)。getattribute(value))二、select下拉框操作1、select控件识别
  img3。png
  常见操作有两种:一步到位,二次管控!2、一步到位
  一步到位:直接定位元素点击即可,示例如下:一步到位,直接选择典韦driver。findelement(By。CSSSELECTOR,〔value3〕)。click()print(driver。findelement(By。CSSSELECTOR,〔value3〕)。text)3、二次管控
  二次管控:先定位select框,再定位select里的选项,通过Select对象进行强转,来调用select控件中的Api来达到操作的目的。
  常见操作方法:selectbyindex():通过下标选择对应项selectbyvalue():通过value选择对应项selectbyvisibletext():通过可见文本选择对应项
  示例代码如下:selectSelect(driver。findelement(By。ID,select))选择第一个选项select。selectbyindex(0)调用firstselectedoption就能获取当前下拉框选中值啦print(select。firstselectedoption。text)sleep(2)选择典韦select。selectbyvalue(3)调用firstselectedoption就能获取当前下拉框选中值啦print(select。firstselectedoption。text)sleep(2)选择凯select。selectbyvisibletext(凯)调用firstselectedoption就能获取当前下拉框选中值啦print(select。firstselectedoption。text)4、遍历所有选项
  示例代码如下:打印所有选项的textforoptioninselect。options:print(选项为:option。text)
  完整代码示例:fromtimeimportsleepfromseleniumimportwebdriverfromselenium。webdriver。common。byimportByfromselenium。webdriver。support。selectimportSelectfromwebdrivermanager。chromeimportChromeDriverManagerdriverwebdriver。Chrome(ChromeDriverManager()。install())driver。get(http:localhost:8080SelectDemo。html)一步到位,直接选择典韦driver。findelement(By。CSSSELECTOR,〔value3〕)。click()print(driver。findelement(By。CSSSELECTOR,〔value3〕)。text)selectSelect(driver。findelement(By。ID,select))选择第一个选项select。selectbyindex(0)调用firstselectedoption就能获取当前下拉框选中值啦print(select。firstselectedoption。text)sleep(2)选择典韦select。selectbyvalue(3)调用firstselectedoption就能获取当前下拉框选中值啦print(select。firstselectedoption。text)sleep(2)选择凯select。selectbyvisibletext(凯)调用firstselectedoption就能获取当前下拉框选中值啦print(select。firstselectedoption。text)打印所有选项的textforoptioninselect。options:print(选项为:option。text)sleep(2)
  关于Select模块的其他方法还有很多,其他方法,还请各位各位读者朋友自己去尝试,就不一一列举了!三、交互操作弹出框的处理1、弹出框分类:
  弹出框分为两种,一种基于原生JavaScript写出来的弹窗,另一种是自定义封装好的样式的弹出框,即原生JavaScript写出来的弹窗,另一种弹窗用click()基本就能搞定。原生JavaScript写出来的弹窗又分为三种:
  alert
  img4。png
  confirm
  img5。png
  prompt
  img6。png2、弹窗处理常用方法:
  alertconfirmprompt弹出框操作主要方法有:driver。switchto。alert:切换到alert弹出框上alert。text:获取文本值accept():点击确认dismiss():点击取消或者关闭对话框sendkeys():输入文本值仅限于prompt,在alert和confirm上没有输入框
  alert弹窗处理
  示例代码如下:alert弹窗处理driver。findelement(By。ID,alert)。click()alertdriver。switchto。alertprint(alert。text)确定alert。accept()sleep(2)
  confirm弹窗处理
  示例代码如下:dialog对话框处理driver。findelement(By。ID,dialog)。click()alertdriver。switchto。alertprint(alert。text)取消操作alert。dismiss()sleep(2)
  prompt弹窗处理弹窗输入框driver。findelement(By。ID,welcome)。click()alertdriver。switchto。alertprint(alert。text)alert。sendkeys(input框)alert。accept()sleep(2)print(alert。text)四、执行Js操作
  在做web自动化时,有些情况selenium的api无法完成,需要通过第三方手段比如js来完成实现,比如去改变某些元素对象的属性或者进行一些特殊的操作,本文将来讲解怎样来调用JavaScript完成特殊操作。1、用法
  driver。executescript(js语句)2、模拟场景
  场景1
  打开百度首页,并弹窗提示hellow,world!,关闭弹窗,控制台输出弹窗文本hellow,world!示例代码如下:执行js语句driver。executescript(alert(hellow,world!))alertdriver。switchto。alertprint(alert。text)确定alert。accept()
  场景2示例代码如下:将百度按钮改成MyLoveelementdriver。findelement(By。ID,su);driver。executescript(document。getElementById(su)。setAttribute(value,MyLove);,element);
  效果如下:
  3、模拟滚动条操作
  在写脚本时,总会遇到一种情况,就是当滚动拉倒最下面了,表单或者下拉框、按钮这些元素未在当前页面展示,而webdriver提供的方法都是操作当前页面可见的元素,这时我们使用JavaScript操作浏览器的滚动条,滚动后使页面元素可见,就可完成后面的元素操作了。
  核心思路:
  就是使用js去控制浏览器滚动条的位置,在使用selenium调用JavaScript操作js完成。
  下面举例几种常用滚动条的js代码示例如下:拖动滚动条至底部document。documentElement。scrollTop10000window。scrollTo(0,document。body。scrollHeight)拖动滚动条至顶部document。documentElement。scrollTop0arguments〔0〕。scrollIntoView(false);左右方向的滚动条可以使用window。scrollTo(左边距,上边距)方法window。scrollTo(200,1000)
  实际案例
  以博客园我的文章列表页为例,来演示滚动条操作,具体代码如下:fromtimeimportsleepfromseleniumimportwebdriverfromselenium。webdriver。common。byimportByfromwebdrivermanager。chromeimportChromeDriverManagerdriverwebdriver。Chrome(ChromeDriverManager()。install())driver。get(https:www。cnblogs。comlongronglang)driver。maximizewindow()获取第一篇文章列表元素elementdriver。findelement(By。CSSSELECTOR,。forFlow〔rolearticle〕:nthoftype(1)。verticalmiddle)sleep(2)将页面滚动条拖到底部driver。executescript(window。scrollTo(0,document。body。scrollHeight))将滚动条滚动至第三篇文章列表位置driver。executescript(arguments〔0〕。scrollIntoView(true),element)sleep(2)将滚动条滚动到顶部driver。executescript(arguments〔0〕。scrollIntoView(false),element)sleep(2)将滚动条滚动到指定位置driver。executescript(window。scrollTo(200,1000))五、Cookie操作之完美绕过验证码
  下面我们就使用cookie操作,绕过登录验证码
  还是以博客园为例,下面本文来介绍下如何绕过下图验证码,进入博客园
  图片1、工具准备Fiddler。exeIDEAEclipseselenium的cookie操作
  如何操作?
  看完之后,记得收藏转发。2、使用Fiddler抓包
  一般登陆网站成功后,会生成一个已登录状态的cookie,那么只需要直接把这个值拿到,用selenium进行addCookie操作即可。
  可以先手动登录一次,然后抓取这个cookie,这里我们就需要用抓包工具fiddler了
  先打开博客园登录界面,手动输入账号和密码(不要点登录按钮)
  图片
  打开fiddler抓包工具,此时再点博客园登录按钮
  图片
  登录成功后,再查看cookie变化,发现多了两组参数,多的这两组参数就是我们想要的,copy出来,一会有用
  图片3、cookie操作语法
  driver。addcookie()
  addcookie(cookiedict)方法里面参数是cookiedict,说明里面参数是字典类型。
  源码官方文档介绍:addcookie(self,cookiedict)Addsacookietoyourcurrentsession。Args:cookiedict:Adictionaryobject,withrequiredkeysnameandvalue;optionalkeyspath,domain,secure,expiryUsage:driver。addcookie({name:foo,value:bar})driver。addcookie({name:foo,value:bar,path:})driver。addcookie({name:foo,value:bar,path:,secure:True})
  从官方的文档里面可以看出,添加cookie时候传入字典类型就可以了,等号左边的是name,等号左边的是value。
  把前面抓到的两组数据(参数不仅仅只有name和value),写成字典类型:{name:。CNBlogsCookie,value:2C3AE01E461B2D2F1572D02CB936D77A053089AA2xxxx。。。}{name:。Cnblogs。AspNetCore。Cookies,value:CfDJ8Mmb5OBERd5FqtiQlKZZIG4HKzZxxx。。。}4、完整示例代码coding:utf8fromseleniumimportwebdriverimporttimedriverwebdriver。Chrome()driver。maximizewindow()driver。get(https:www。cnblogs。comlongronglang)添加cookiec1{udomain:u。cnblogs。com,uname:u。CNBlogsCookie,uvalue:uxxxx,uexpiry:15412950521,upath:u,uhttpOnly:True,usecure:False}c2{udomain:u。cnblogs。com,uname:u。Cnblogs。AspNetCore。Cookies,uvalue:uxxxx,uexpiry:15412950521,upath:u,uhttpOnly:True,usecure:False}添加2个值driver。addcookie(c1)driver。addcookie(c2)time。sleep(3)刷新下页面就见证奇迹了driver。refresh()再来个登录后操作driver。findelementbylinktext(u博客园)。click()driver。findelementbylinktext(Refain)。click()
  效果图
  image。png
  有几点需要注意:登录时候要勾选下次自动登录按钮。addCookie()只添加name和value,对于博客园的登录是不成功。本方法并不适合所有的网站,一般像博客园这种记住登录状态的才会适合。学习过程中有遇到疑问的,可以加我微信1399811201交流最后
  本来想着一口气都写完的,结果时间不允许,今天先更新这么多了,996的工作情况,请原谅我的懒惰,您的转发、转发、点赞,我都当作了喜欢!

坐同事顺风车北京回昆明回家过年,抵达后同事却问我要钱,怎么办如果没猜错的话,你这一路上,除了拿了点吃的喝的外,一分钱也没花,而且还是三口人,人家两口子换班开,换下来的人也只能干坐着,想躺会都没办法,因为后座上让你一家人坐满了,再加上你不……买奥迪A6L好还是雷克萨斯ES250好?奥迪A6L和雷克萨斯ES250两款车都有着各自的优势。首先对于国人来说,奥迪的牌子绝对要比雷克萨斯要硬很多,面子上带来的感觉是不一样的。奥迪一向以科技著称,这点在A6L身上也表……你会开车吗?女人不会开车是不是很笨?如果比开车最笨,那当属我老婆了,别人都得靠边站,气的我牙根子都疼,驾校退了一次费,换了一个驾校。2016年,我们结婚之前,我给她报的驾校,让她去学车,当初是2800块钱不……吉利SUV哪款车好?吉利SUV逐一分析远景S1优点:老帝豪架构,廉价但品控稳定,极为的便宜。相比较吉利X6以下的小型SUV空间充足,经济耐用。缺点:构架太老旧,造型不时尚,动力弱,配置低,保值率低……已经凉透的大众途锐,咋又开始嚣张起来了?逢众必反,逢众比骂,中国人真的是太好被忽悠了。大众车系不仅是中国,也是全球重要的用车选择,问题谁没出过,为什么要刻意贬低和夸张地诋毁呢?途锐只有买不买得起,不存在凉和不凉……买七座suv别克新出的那款昂科旗空间怎么样?作为别克SUV家族扛鼎之作,别克昂科旗源自通用汽车中大型豪华SUV架构,并基于国内实际使用环境进行针对性开发,外形更豪华、尺寸更合理、内饰更精致、操控更精准、乘坐更舒适,将成为……10,6分钟制胜!中超没落土豪队又赢了,升至第5,北京国安当文彬少侃球(首发)中超第4轮比赛,深圳队对阵沧州雄狮队,这场比赛也引起了部分球迷关注,大家更多关注的是深圳队的表现,作为中超没落的土豪队,深圳队本赛季并不被外界看好,但是很意外……青岛西海岸新区圣海文化艺术研究院院长潍坊聚德电子有限公司董事徐桂玲、王伯冰听取工作人员介绍大众网海报新闻见习记者蔡齐通讯员宋方圆济宁报道2月23日,青岛西海岸新区圣海文化艺术研究院院长徐桂玲、潍坊聚德电子有限公司董事长王伯冰……新赛季球队评级,快船森林狼灰熊独行侠第一梯队这绝对是最大胆的新赛季球队评级,在传统印象中,卫冕冠军勇士,崛起的凯尔特人,阵容稳定的雄鹿,甚至是话题不断的篮网,这些才是新赛季豪强。但NBA联盟风云变幻,通过休赛期的交易以及……一款旗舰手机到底应该具备哪些素质?我个人对手机要求就很高的,对我来说,一部旗舰手机应该具备以下素质。1。外观,有一定辨识度,而不是大众脸。比如目前的苹果,三星及华为旗舰2。做工工艺,一眼看上去……vivoX90X90Pro和Pro简单对比,谁更值得买,谁更众所周知,vivo手机是主打拍照的手机,对于喜欢手机摄影的消费者来说,vivo手机并不陌生,这次发布的vivoX90系列更是性能越级,带来了不错的影像体验。这次vivoX90系……奥迪车一般都有什么毛病?我开过两款奥迪A6L2。0T的,之前05款的08年奥迪那家伙是真烧机油啊,一千公里加一升,有很多人说我的不烧,怎么怎地,吹牛逼那是,开了6年别的毛病没有只是保养,后来换了……
金星巴黎参加阔太聚会!54岁容光焕发,吃法式大餐喝红酒生活惬7月7日,名媛靳羽西在个人社交账号上分享了一组参加聚会的照片,并配文称,海内存知己,天涯若比邻,到巴黎旅游,最令我开心的是见到来自世界各地的朋友们。有许久不见的老朋友,还能认识……米家分区洗烘一体机明日开售双区全高配首发4999元就在上周,小米举办了新品发布会,带来了多款全新产品,其中就包括新款米家分区洗烘一体机。新品采用双区全高配设计,支持五重净化健康洗,售价为5999元,首发仅需4999元,将于8月……日本最新研究通过注射熊的血清增强人体肌肉我相信很多人都看过关于基因战士的科幻电影,但现实中真的拥有类似的技术吗?近日根据日本广岛大学的新闻报道,日本一位科研人员就进行了一项关于注射熊血清来增强人类肌肉细胞的疯狂……想买个20万左右落地的SUV,最好是合资,哪款性价比最高?目前中国市场最火的汽车细分市场就是SUV领域了,目前好多消费者购买汽车的首选车型都是SUV,良好的视野和通过性以及足够的驾乘空间都是吸引消费者的地方,下面就帮你推荐几款目前市场……河南发布郑开旅游年卡,性价比真的提升了吗?旅游行业的未来很多人都是未知的,虽然在温饱问题解决以后,必然会迎来精神享受的年代,但是因为特殊的时期以及现代年轻人的压力,以景区为主的旅游也成为了一种奢侈品,因此不少景区采用各……堪称2022年最值得买洗衣机?实测TCL双子舱复式分区洗衣机序:自从女王生完二胎之后,我的家庭地位又变了,对,你没看错,我是第四位,也就是最末的一位。随着二娃的长大,也为了更好地照顾女王和小家伙,岳父母来到了家里,就形成了一个六口……开5万以下的车是不是很没面子?都不太好意思和人家停在一起?有攀比之心的人就会觉得没面子,甚至会不好意思和别人豪车停在一起。但如果没有攀比之心,就会毫不戒意。是吗?看来你的面子挺大,请问你身价几何?退一万步说,多大的身价要有多大的……XO到底指什么酒?为何会成为有钱人的钟爱?一次让你看明白酒是一种烈性饮料,千百年来,拥有着无数的追随者。有人醉心于它的口感,有人将它当做社交沟通的载体,有人更是借着酒性留下不朽的诗篇。而当你把目光转向当今国人的餐桌时,你……如果在高速上开车加速时速120,然后收油滑行至时速100,然用我们的话说就是吊着油门走,以前送车是运费是承办性质,油钱包含在里面的,那必须要练就黄金右脚才行,一趟新疆3000多公里下来,新手和老司机的油耗差距立马体现出来了,小车至少80……车龄已达15年,但未达行驶里程,如果想继续用需要做哪些准备?只强调年限还是不科学!我媳妇当年花30多万买的车,上下班代步,家里停车库,单位也车库,每年跑大约8千公里,明年就15年了,车还跟新的一样,一年两检真没必要!强烈建议年限和公里数……在广东佛山买的新车可以回广西柳州上牌吗?应该如何办理?我是汽车4s店的销售,大家可以关注我了解更多的购车知识和购车指导。你是问在广东佛山买的新车,可以回广西柳州上牌吗?首先可以肯定回答的是可以的也就是说你到异地买车,然……2022年新一轮汽车下乡将至,农民买车有补贴!你要买吗?乡村经济的高速发展及农村居民人均可支配收入的翻番式增长有效带动了基本生活条件的改善,越来越多的农民家庭也实现了由温饱到小康的转变。数据显示,截止到2020年年末农村家庭的人均存……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网