自动化的一些操作

元素操作:点击 输入 清理

python 复制代码
from selenium import webdriver
from time import sleep

driver = webdriver.Edge()

driver.get(r"D:\WORK\ww\web自动化_day01_课件+笔记+资料+代码\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html")

driver.find_element_by_css_selector("#userA").send_keys("admin")
driver.find_element_by_xpath("//*[@id='passwordA']").send_keys("123456")
driver.find_element_by_id("telA").send_keys("1861111")
driver.find_element_by_css_selector("#emailA").send_keys("123@qq.com")

sleep(3)
# 先清空 再输入
driver.find_element_by_id("telA").clear()
driver.find_element_by_id("telA").send_keys("1860000")
sleep(3)

# driver.find_element_by_css_selector("#zc > fieldset > button").click()
driver.find_element_by_css_selector("button").click()
# 提交后 所有内容清空
sleep(3)
driver.quit()

浏览器常用操作API

a链接属性设置:1.跳转 打开一个新窗口 2.在当前窗口跳转

python 复制代码
# 在新窗口中打开
<a href="https://www.example.com" target="_blank">Click here</a>
# 当前窗口内跳转
<a href="https://www.example.com" target="_self">Click here</a>

# 参数为"_self"表示在当前窗口打开链接,而参数为"_blank"表示在新窗口打开链接。如果不设置target属性,默认情况下链接会在当前窗口打开。

back:是在当前窗口加载新内容才能后退,打开新窗口不行

forward:先执行后退后 再前进

访问历史!!!

前进必须放在后退操作后执行

python 复制代码
from selenium import webdriver
from time import sleep

driver = webdriver.Edge()

driver.get(r"D:\WORK\ww\web自动化_day01_课件+笔记+资料+代码\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html")


driver.maximize_window()
sleep(2)

driver.set_window_size(300,200)
sleep(2)

driver.set_window_position(320,150)
sleep(2)

driver.maximize_window()

# driver.find_element_by_css_selector("#fwA").click()
driver.find_element_by_partial_link_text("访问").click()

driver.back()
sleep(2)

driver.forward()
sleep(2)

driver.quit()

quit() 关闭由程序启动的所有窗口

close() 关闭当前窗口

利用title切换当前窗口

url

//注册实例

title:

python 复制代码
from selenium import webdriver
from time import sleep

driver = webdriver.Edge()

driver.get(r"D:\WORK\ww\web自动化_day01_课件+笔记+资料+代码\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册实例.html")


driver.find_element_by_id("user").send_keys("admin")

sleep(2)

driver.refresh()

print(driver.title)

print(driver.current_url)

sleep(2)
driver.find_element_by_link_text("注册A网页").click()

sleep(3)

# 关闭主窗口 默认启动的界面
driver.close() # 关掉了综合实例的

sleep(3)

# 关闭由driver启动的所有窗口
driver.quit()

获取元素信息

python 复制代码
from selenium import webdriver
from time import sleep

driver = webdriver.Edge()

driver.get(r"D:\WORK\ww\web自动化_day01_课件+笔记+资料+代码\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html")

# 用户名文本框大小
size = driver.find_element_by_id("userA").size
print(size)

# 获取页面上第一个超文本连接内容 有多个 默认返回第一个
print(driver.find_element_by_css_selector("a").text)

# 获取获取页面上第一个超文本连接地址 输入元素a的属性名href  返回其属性值
print(driver.find_element_by_css_selector("a").get_attribute("href"))

# span是否可见
print(driver.find_element_by_css_selector("span").is_displayed())

# 取消是否可用
print(driver.find_element_by_css_selector("#cancelA").is_enabled())

# 是否被选中 购物的
# print(driver.find_element_by_css_selector("#gwA").is_selected())
# 先选中
driver.find_element_by_css_selector("#gwA").click()
sleep(3)
print(driver.find_element_by_css_selector("#gwA").is_selected())
driver.quit()

鼠标操作

python 复制代码
from selenium import webdriver
from selenium.webdriver import ActionChains
from time import sleep

driver = webdriver.Edge()

driver.get(r"D:\WORK\ww\web自动化_day01_课件+笔记+资料+代码\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html")

# 实例化
action = ActionChains(driver)

# 右击
action.context_click(driver.find_element_by_css_selector("#userA")).perform()

sleep(2)

driver.find_element_by_css_selector("#userA").send_keys("admin")
sleep(2)
# 双击 预期选中admin
action.double_click(driver.find_element_by_css_selector("#userA")).perform()

sleep(2)

driver.quit()
python 复制代码
# 粘贴快捷键 可以实现快捷键的功能 但是Edge好像实现不了
from selenium import webdriver
from selenium.webdriver import ActionChains
from time import sleep

driver = webdriver.Edge()

driver.get(r"D:\WORK\ww\web自动化_day01_课件+笔记+资料+代码\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html")

# 实例化
action = ActionChains(driver)
# 获取用户名元素 点击右键
action.context_click(driver.find_element_by_css_selector("#userA")).perform()
# 发送p 只发送了p 在火狐可以
driver.find_element_by_css_selector("#userA").send_keys("p")

# 123


sleep(2)

driver.quit()
python 复制代码
# 悬停 注意要perform
from selenium import webdriver
from selenium.webdriver import ActionChains
from time import sleep

driver = webdriver.Edge()

driver.get(r"D:\WORK\ww\web自动化_day01_课件+笔记+资料+代码\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html")

# 实例化
action = ActionChains(driver)
action.move_to_element(driver.find_element_by_css_selector("button")).perform()

sleep(3)

driver.quit()
python 复制代码
# 拖拽和移动
from selenium import webdriver
from selenium.webdriver import ActionChains
from time import sleep

driver = webdriver.Edge()

driver.get(r"D:\WORK\ww\web自动化_day01_课件+笔记+资料+代码\web自动化_day01_课件+笔记+资料+代码\02_其他资料\drop.html")

action = ActionChains(driver)
source = driver.find_element_by_id("div1")
target = driver.find_element_by_id("div2")
sleep(2)

action.drag_and_drop(source,target).perform()

sleep(2)

# 扩展 通过坐标偏移量移动
action.drag_and_drop_by_offset(source,xoffset=180,yoffset=360).perform()

sleep(2)

driver.quit()

包:集合

模块:一个个.py文件

python 复制代码
from selenium import webdriver
from selenium.webdriver import ActionChains
from time import sleep

driver = webdriver.Edge()
driver.get(r"D:\WORK\ww\web自动化_day01_课件+笔记+资料+代码\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html")

action = ActionChains(driver)

action.context_click("定位元素").perform()
action.double_click("定位元素").perform()
action.move_to_element("定位元素").perform()
action.drag_and_drop("source元素","target元素").perform()
# perform() 执行

键盘操作

python 复制代码
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep

driver = webdriver.Edge()

driver.get(r"D:\WORK\ww\web自动化_day01_课件+笔记+资料+代码\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html")
# 定位
user = driver.find_element_by_id("userA")
# 输入
user.send_keys("admin1")
sleep(2)
# 删除一个
user.send_keys(Keys.BACK_SPACE)
# 全选 注意双引号
user.send_keys(Keys.CONTROL,"a")

# 复制
user.send_keys(Keys.CONTROL,"c")

driver.find_element_by_id("passwordA").send_keys(Keys.CONTROL,"v")


sleep(3)

driver.quit()
python 复制代码
user.send_keys(Keys.CONTROL,"c") #组合键
user.send_keys(Keys.BACK_SPACE) #单键

元素等待

python 复制代码
from selenium import webdriver
from time import sleep

# 获取浏览器驱动对象
driver = webdriver.Edge()
# 最大化浏览器
driver.maximize_window()
# 设置元素等待 隐式等待
driver.implicitly_wait(3)

driver.get(r"D:\WORK\ww\web自动化_day01_课件+笔记+资料+代码\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html")

driver.find_element_by_id("user").send_keys("admin")
sleep(3)

driver.quit()
python 复制代码
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.wait import WebDriverWait

driver = webdriver.Edge()

driver.get(r"D:\WORK\ww\web自动化_day01_课件+笔记+资料+代码\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html")

# 返回的是元素
# element = WebDriverWait(driver,timeout=3,poll_frequency=0.5).until(lambda x:x.find_element_by_id("user"))
# element.send_keys("admin")
# x 为driver
WebDriverWait(driver,timeout=3,poll_frequency=0.5).until(lambda x:x.find_element_by_id("user")).send_keys("admin")

sleep(3)

driver.quit()

两者异常类型不同

显示等待:

隐式等待:

键盘:组合 单键 send_keys(Keys.xxx,"a") Keys 需要导包

测试上传文件

python 复制代码
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.wait import WebDriverWait

driver = webdriver.Edge()

driver.get(r"D:\WORK\ww\web自动化_day01_课件+笔记+资料+代码\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html")

# driver.find_element_by_css_selector("[name='upfilea']").click()
# 使用send_keys("文件路径)
driver.find_element_by_css_selector("[name='upfilea']").send_keys(r"D:\WORK\1.png")

sleep(10)

driver.quit()

测试下拉框

python 复制代码
from selenium import webdriver
from time import sleep

driver = webdriver.Edge()

driver.get(r"D:\WORK\ww\web自动化_day01_课件+笔记+资料+代码\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册A.html")

driver.maximize_window()

driver.implicitly_wait(30)

driver.find_element_by_css_selector("[value='sh']").click()
sleep(2)
driver.find_element_by_css_selector("[value='bj']").click()
sleep(2)
driver.find_element_by_css_selector("[value='gz']").click()
sleep(2)
driver.quit()
相关推荐
恩爸编程42 分钟前
探索 Nginx:Web 世界的幕后英雄
运维·nginx·nginx反向代理·nginx是什么·nginx静态资源服务器·nginx服务器·nginx解决哪些问题
Michaelwubo2 小时前
Docker dockerfile镜像编码 centos7
运维·docker·容器
好像是个likun2 小时前
使用docker拉取镜像很慢或者总是超时的问题
运维·docker·容器
cominglately5 小时前
centos单机部署seata
linux·运维·centos
CircleMouse5 小时前
Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
linux·运维·服务器·centos
程序猿000001号5 小时前
Selenium 深度解析:自动化浏览器操作的利器
selenium·测试工具·自动化
Karoku0665 小时前
【k8s集群应用】kubeadm1.20高可用部署(3master)
运维·docker·云原生·容器·kubernetes
木子Linux6 小时前
【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区
linux·运维·服务器·centos·云计算
mit6.8246 小时前
Ubuntu 系统下性能剖析工具: perf
linux·运维·ubuntu
watermelonoops6 小时前
Windows安装Ubuntu,Deepin三系统启动问题(XXX has invalid signature 您需要先加载内核)
linux·运维·ubuntu·deepin