python-selenium之 显示等待、窗口切换

准备

使用 pip install selenium  下载包

在程序中进行调用

# 导入 selenium 下的 webdriver(网页内驱动模块) from selenium import webdriver
from selenium import webdriver

Selenium WebDriver提供了各种语言环境的API来支持更多控制权和编写符合标准软件开发实践的应用程序。

下载对应浏览器版本的driver并添加环境变量

 

操作网页元素

创建一个进程,获取网页

brower = webdriver.Chrome()  # 支持多种浏览器,这里已谷歌举例
brower.get("https://xxx.xx.xx/")

 元素定位,IDE可以直接展示出来:

元素定位可以使用chrome或者firefox进行元素copy,根据元素的类型进行选择

brower.find_element_by_name("username").send_keys("uxxx")  #输入框
brower.find_element_by_class_name("submitBtn").click()  # 按钮点击
brower.find_element_by_css_selector("#ul_others  >  li:nth-child(2)  >  span").click() # 链接点击

页面控制切换

有时候我们的网页是打开新窗口的方式进行展示的,这时候,我们需要切换页面操作,可以使用switch_to.window()

我们要先获取控制器上所有的页面的句柄

pages = brower.window_handles
print(pages)  # 一个列表
brower.switch_to.window(pages[1]) #取值切换到第二个打开的窗口

之后再使用brower就是在新页面操作了

显示等待

网页元素加载与网络和性能有很大的关系,我们不能单纯的依靠time.sleep来进行数据等待,这样太消耗时间;

selenium有四种等待方式,这里只介绍一下显示等待:

                                       表格引用至 (https://www.gaoyaxuan.net/blog/18.html

等待的条件

WebDrive的方法

页面元素是否在页面上可用和可被单击

elementToBeClickable(By locator)

页面元素处于被选中状态

elementToBeSelected(WebElement elelment)

页面元素在页面上是否存在

presenceOfElementLocated(By locator)

页面元素是否包特定文本

textToBePresentInElement(By locator)

页面元素值

textToBePresentInElementValue(By   locator,java.lang.String text)

标题

titleContains(java.lang.String tilte)

我们可以设置平均请求时间和最长等待时间,这里需要引用By、until以及expected_conditions 

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

select_css = (By.CSS_SELECTOR,  "#folders  >  li:nth-child(16)")  # 获取元素信息
WebDriverWait(brower,  20,  0.5).until(EC.presence_of_element_located(select_css))
# 设置等待最长时间20s,每0.5s请求一次   until函数去检查这个元素是否可用

ES后面可以跟的检查方式如下,可根据实际情况进行调整:

 

注意:

1.谷歌的chromedriver版本要和浏览器版本一致,不然会出现多余的句柄,导致窗口选择出现混乱

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值