web自动化-selenium(三)

2022-02-16  本文已影响0人  在下YM

frame

frame:HTML页面中的一种框架,主要作用是在当前页面嵌套另一页面页面; (HTML语言中,frame/iframe标签为表单框架)

webdriver只能访问一个页面,默认是外层页面,如果要访问嵌套的页面,必须切换当前到嵌套页面中。

frame 切换

driver.switch_to.frame(frame 元素)

driver.switch_to.default_content() 切换到外层页面

from selenium import webdriver

driver = Chrome('./chromedriver')
driver.get('https://www.w3school.com.cn/tiy/t.asp?f=html_elements_select')

# 找到 iframe 元素
frame=driver.find_element_by_tag_name('iframe')
# 切换到 iframe 中
driver.switch_to.frame(frame)
# 查找 select 元素
select=driver.find_element_by_tag_name('select')
# 打印元素的 innerHTML 属性
print(select.get_attribute('innerHTML'))

多窗口

说明:在HTML页面中,经常有a标签也就是超链接,这些链接在被执行时,有的会在新的窗口打开链接;

多窗口切换

说明:在WebDriver中封装了获取当前窗口句柄方法和获取所有窗口句柄的方法以及切换指定句柄窗口的方法;(句柄:英文handle,窗口的唯一识别码)

driver.switch_to.window(窗口句柄)

from selenium import webdriver
import time

driver = Chrome('./chromedriver')
driver.get('http://www.baidu.com')
# 打开新的窗口
driver.find_element_by_link_text('新闻').click()
# 查看所有窗口句柄
print(driver.window_handles)
# 查看当前的窗口句柄
print(driver.current_window_handle)
# 切换窗口
driver.switch_to.window(driver.window_handles[0])
time.sleep(5)
# 切回窗口
driver.switch_to.window(driver.window_handles[1])

警告框处理

说明:WebDriver中对处理警告框的操作,有专用的处理方法;

提示: HTML中常用的对话框有三种,处理的方法都一样

1.alert
2.confirm
3.prompt

调用方法

获取当前窗口的警告框 alert=driver.switch_to.alert

警告框处理方法

accept : 接受对话框选项
dismiss : 取消对话框选项


from selenium import webdriver
import time

driver = Chrome('./chromedriver')
driver.get('http://www.baidu.com')

# 打开一个警告框
driver.execute_script("alert('hello')")
# 切换到警告框
alert = driver.switch_to.alert

# 关闭警告框
alert.dismiss()

什么是下拉选择框

说明:下拉框就是HTML中<select>元素;

Select类

from selenium.webdriver.support.select import Select

说明:Select 类是 WebDriver 为解决 select 标签定位诞生的,此类定位的是 select 标签。

使用步骤:

找到 select 元素
实例化 Select 对象

import time
from selenium.webdriver.support.select import Select
from selenium import webdriver

driver = Chrome('./chromedriver')

# 控制浏览器访问url地址
driver.get('file:///****/test.html')

# 单选 select
el = driver.find_element_by_id('select-single')
select_single = Select(el)
options=select_single.options
for i in range(len(options)):
    # 通过下标选中
    select_single.select_by_index(i)
    time.sleep(1)

# 多选 select
el = driver.find_element_by_id('select-multiple')

select = Select(el)
options=select.options

print(options)
# 全部不选中
select.deselect_all()

for i in range(len(options)):
    # 通过下标选中
    select.select_by_index(i)
    time.sleep(1)

select.deselect_all()

常用属性和方法

selenium开启无界面模式

绝大多数服务器是没有界面的,selenium控制谷歌浏览器也是存在无界面模式的,这一小节我们就来学习如何开启无界面模式(又称之为无头模式)

开启无界面模式的方法
实例化配置对象

 from selenium import webdriver

options = webdriver.ChromeOptions() # 创建一个配置对象
options.add_argument("--headless") # 开启无界面模式
options.add_argument("--disable-gpu") # 禁用gpu
driver = webdriver.Chrome('./chromedriver', options=options) # 实例化带有配置的driver对象

driver.get('https://www.baidu.cn')
print(driver.title)

driver.quit()
上一篇 下一篇

猜你喜欢

热点阅读