Selenium基础篇之指定窗口关闭
Posted 空空star
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium基础篇之指定窗口关闭相关的知识,希望对你有一定的参考价值。
文章目录
前言
大家好,我是空空star,本篇给大家分享一下Selenium基础篇之指定窗口关闭。
本篇使用的selenium版本如下:
Version: 4.8.2
本篇使用的浏览器如下:
一、场景
访问C站首页,在toolbar搜索框输入selenium,点击搜索按钮;
在搜索结果页,点击第一个selenium资源标题;
先关闭搜索结果页窗口①;
再关闭博客详情页窗口②;
最后关闭C站首页窗口③。
二、设计
1.引入库
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
2.启动浏览器实例
driver = webdriver.Chrome()
3.访问C站首页
driver.get('https://www.csdn.net/')
4.设置隐式等待
driver.implicitly_wait(5)
5.在toolbar搜索框输入selenium
driver.find_element(By.ID, 'toolbar-search-input').send_keys('selenium')
6.点击搜索按钮
driver.find_element(By.ID, 'toolbar-search-button').click()
7.获取所有窗口句柄
win = driver.window_handles
8.切换窗口句柄
driver.switch_to.window(win[-1])
9.点击第一个资源标题
driver.find_element(By.CLASS_NAME,'item-hd').click()
10.获取所有窗口句柄
win = driver.window_handles
print(win)
['D2A3C0BCAA4F5F8F1812491BFCC5E4B5', 'FC5E02CA1A6AE8A131BE2F0E9A4340E4', '02367B50072F97AEFE8014CD063A5AFE']
11.关闭搜索结果页窗口①
因为当前窗口句柄仍在搜索结果页,所以直接关闭,无需切换窗口句柄
driver.close()
12.关闭博客详情页窗口②
driver.switch_to.window(win[2])
print(driver.title)
driver.close()
selenium用法详解【从入门到实战】【Python爬虫】【4万字】_Dream丶Killer的博客-CSDN博客
13.关闭C站首页窗口③
# 强制等待3秒,为了观察效果
sleep(3)
driver.switch_to.window(win[0])
print(driver.title)
driver.close()
CSDN - 专业开发者社区
14.结束webdriver进程
driver.quit()
总结
Python+Selenium基础篇之4-XPath的使用
开始写自动化脚本之前,我们先学习几个概念,在完全掌握了这几个概念之后,有助于我们快速上手,如何去编写自动化测试脚本。
元素,在这个教程系列,我们说的元素之网页元素(web element)。在网页上面的文本输入框,按钮,多选,单选,标签,和文字都叫元素,总之,凡是能在页面显示的对象都可以作为页面元素对象。
元素定位,有时候也叫Locator,一个HTML页面元素,可以用很多方法去描述这个元素的位置。打个比方,生活中地址,一个大厦,正常的地址是 xx省xx市xx区xx街道xxx号,这个具体描述就是这个大厦的Locator。同样的道理,一个网页元素,也有位置,也可以通过一些手段或者表达式去描述这个元素在页面对应的位置。
XPath,XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力,XPath 很快的被开发者采用来当作小型查询语言。
Selenium一共有八种元素定位方法,其中,在实际开发自动化脚本过程中,XPath的使用是最多的一种方法,所以本文就介绍如何通过XPath来元素定位。学习了XPath元素定位后,其他7中方法,很容易理解,甚至已经学会了其中好几种方法。
一.XPath工具安装
为了提高抓取元素XPath的,我推荐在Firefox上安装一个firepath的插件,这个插件,可以帮我们快速获取网页元素的XPath表达式。
1. 打开火狐浏览器,如果没有安装,下载默认安装
2. 点击右上角,菜单-附件组件-扩展
3. 在搜索所有附件组件文本输入框输入:firebug
4. 找到Firebug,点击 安装。重复步骤3和4,搜索和安装FirePath。
5. 安装好了之后,会在火狐浏览器右上角显示一个虫子的图标。
二.XPath工具简单使用
我们用定位百度首页的搜索输入框这个元素定位来演示。
1. 打开百度首页
2. 鼠标定位到搜索输入框
3. 右键鼠标,选Inspect in FirePath
4. 打开界面如下图
①FirePath自动推荐该元素的XPath表达式
②该元素节点的详细信息,XPath表达式选取重点区域
③找到一个匹配元素
一般来说,自动推荐的XPath表达式定位不够精确。我们大部分时候需要去步骤2中,找出能够识别这个唯一元素的节点信息。刚好上面通过id=kw只能找到一个匹配的元素,说明这个XPath可用,看起来也简洁。实际项目中,可能XPath表达式写得很长,或者附近节点信息好多相同,不太好能够快速找到一个唯一的节点信息去定位这个目标元素。接下来,我介绍几种比较实用的XPath定位技巧,基本上能定位到所有的网页元素。
三.XPath定位技巧之text()方法
以百度首页右上角“新闻”定位举例
XPath如下图
四.XPath定位技巧之contains()方法
有时候,我们不喜欢写很长的XPath表达式,而且节点信息里面,有些信息是动态的,每次都获取都不一样,这个时候contains()方法就很好用。
JD首页左侧电脑菜单举例
XPath写法推荐,这里用contains()方法来定位
这里href = //diannao.jd.com, 如果我觉得这个href太长,我只取关键字diannao,利用contains()方法来定位就方便多了,推荐电脑这个元素的XPath://*/a[contains(@href,‘diannao‘)]
五. 相对XPath路径写法
有时候,我们遇到目标元素节点的信息很少,不足够用来精确定位到目标元素,这个时候,我们就需要考虑,利用目标元素上下附件节点,通过确定附件的节点从而确定目标元素,这种方式就叫相对路径。
这里用百度新闻首页的一个单选按钮来举例;
火狐浏览器上firepath给出的推荐表达式是:
这里推荐的XPath是根据目标元素节点中id信息来定位的,这个通过id就能定位,当然好。有时候,如果这个id不能作为参考值,我们需要利用相对定位方法来定位这个新闻标题前面的单选按钮;
1)先根据for = newstitle 或者text()=新闻标题来定位“新闻标题”这个标签。
2)根据相对定位来确定“新闻标题”前面的这个radio按钮。
3)XPath的写法是:.//*/label[@for=‘newstitle‘]/../input[@id=‘newstitle‘]
由于,当前这个举例不是很符合只能采用相对定位才能确定元素的场景,感觉这个表达式定位,在这里反而更复杂化,但是,相对定位元素方法是一样的,和上面举例的步骤、思维方式是一致的。如果发生了,无法通过目标元素节点信息来定位,那么,就要考虑是否采用相对路径来解决这个问题。元素定位,理论上是没有定位不到的元素,通过以上方法,基本上能定位项目中大部分元素。XPath元素定位就先介绍到这里,以后如果有其他新的好的方法,会添加到这篇文章,接下来,我们开始写一个真正意义上的第一个webui自动化脚本,请看下一篇。
以上是关于Selenium基础篇之指定窗口关闭的主要内容,如果未能解决你的问题,请参考以下文章