元素操作
学习原因
- 需要让脚本模拟用户给指定元素输入值
- 需要让脚本模拟人为删除元素的内容
- 需要让脚本模拟点击操作
方法
- send_keys # 输入方法
- click( ) # 点击方法
- clear( ) # 清空
- submit( ) # input提交
提示
- 在输入方法之前一定要清空操作
代码
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
# 获取所有的input元素
# elements = driver.find_elements(By.TAG_NAME, "input")
# print(len(elements))
# elements有s:返回列表
elements2 = driver.find_elements(By.ID, "kw")
print(type(elements2))
# 通过下标输入内容
elements2[0].send_keys("admin")
# 通过遍历输入
# for el in elements2:
# el.send_keys("李唯")
driver.find_element(By.ID, "su").submit()
sleep(3)
# 清空操作
driver.find_element(By.ID, "kw").clear()
driver.find_element(By.ID, "kw").send_keys("pdd砍一刀")
driver.find_element(By.ID, "su").submit()
操作浏览器常用方法
案例(前5)
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
driver = webdriver.Firefox()
url = r"http://www.baidu.com"
driver.get(url)
# 将浏览器最大化
driver.maximize_window()
# 暂停两秒
sleep(2)
# 设置固定大小 300 200
driver.set_window_size(300, 200)
# 暂停两秒
sleep(2)
# 移动浏览器窗口位置 x:320, y:150
driver.set_window_position(320, 150)
# 暂停两秒
sleep(2)
# 最大化
driver.maximize_window()
# 点击 访问新闻 注意:要演示后退功能,必须限制性打开新的网站
driver.find_element(By.LINK_TEXT, "新闻").click()
# 暂停两秒
sleep(2)
# 执行后退 -->www.baidu.com
driver.back()
# 暂停两秒
sleep(2)
# 执行前进 -->新闻 注意:前进必须放到后退操作后执行
driver.forward()
sleep(3)
driver.quit()
案例(后5)
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
driver = webdriver.Firefox()
url = r"http://www.baidu.com"
driver.get(url)
# 刷新 - 1. 输入admin 2. 刷新完成--清空
driver.find_element(By.ID, "kw").send_keys("admin")
# 暂停2秒
sleep(2)
# 刷新
driver.refresh()
# 获取title
title = driver.title
print("当前页面title为:", title)
# 获取当前url
current_url = driver.current_url
print("当前页面url为:", current_url)
# 点击 注册A网页 打开新窗口
driver.find_element(By.PARTIAL_LINK_TEXT, "新闻").click()
# 暂停3秒
sleep(3)
# 关闭主窗口
driver.close()
sleep(3)
driver.quit()
当前页面title为: 百度一下,你就知道
当前页面url为: https://www.baidu.com/
提示
-
driver.title
和driver.current_url
没有括号,应用场景:一般为判断上步操作是否执行成功。 -
driver.maximize_window()
:一般为前置代码,在获取driver后,直接编写最大化浏览器 -
driver.refresh()
:应用场景,在后面的cookie章节会使用到。 -
deiver.close() 与 driver.quit() 的区别:
- close():关闭当前主窗口
- quit():关闭由driver对象启动的所有窗口
提示:如果当前只有1个窗口,close与quit没有任何区别。
获取元素信息
常用方法
1. size | 返回元素大小 |
---|---|
2. text | 获取元素的文本 |
3. get_attribute( "xxx" ) | 获取属性值 |
4. is_displayed( ) | 判断元素是否可见 |
5. is_enabled( ) | 判断元素是否可用 |
6. is_selected( ) | 判断元素是否选中,用来检查复选框或单选框是否被选中 |
提示
- size、text:为属性,调用时无括号,如xxx.size
案例
需求:使用‘注册A.html'页面,完成以下操作:
1). 获取用户名输入框的大小
2). 获取页面上第一个超链接的文本内容
3). 获取页面上第一个超链接的地址
4). 判断页面中的span标签是否可见
5). 判断页面中取消按钮是否可用
6). 判断页面中'旅游'对应的复选框是否为选中的状态
# 获取浏览器驱动对象
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
driver = webdriver.Firefox()
# 将浏览器最大化
driver.maximize_window()
# 打开urL
url = r"D: \web自动化注册实例.html"
driver.get(url)
# 获取用户名文本框大小
size = driver.find_element(By.CSS_SELECTOR, "#user").size
print("用户名大小为:", size)
# 获取页面上第一个超文本链接内容
text=driver.find_element(By.CSS_SELECTOR, "a").text
print("页面中第一个a标签为:", text)
# 获取页面上第一个超文本链接地址 get_attribute("href")
att = driver.find_element(By.CSS_SELECTOR, "a").get_attribute("href")
print("页面中第一个a标签的href属性为:", att)
# 判断span元素是否 可见
display = driver.find_element(By.CSS_SELECTOR, "span").is_displayed()
print("span元素是否可见:", display)
# 判断 取消按钮 是否 可用
enabled = driver.find_element(By.CSS_SELECTOR, "#cancel").is_enabled()
print("取消按钮是否可用", enabled)
# 判断旅游是否被 选中
select = driver.find_element(By.CSS_SELECTOR, "#ly").is_selected()
print("旅游是否被选中:", select)
# 暂停2
sleep(2)
# 关闭驱动对象
driver.quit()
提示
- text 和 size 调用时,无括号
- get_attribute 一般应用场景:判断一组元素是否为想要的元素或者判断元素属性值是否正确
- is_displayed、is_enabled、is_selected,在特殊应用场景中使用