IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> selenium中的各种 UI 操作 -> 正文阅读

[Python知识库]selenium中的各种 UI 操作

前言

? ? ? ?在web自动化测试中,会包含一些什么操作呢,我们最常用的操作,应该是点击(?click() )、输入( send_keys() )等,这就涉及到我们的鼠标操作了,除此之外,我们的下拉框操作、键盘操作,甚至是我们的文件上传操作,又是如何实现的呢?请再往下看。

一、鼠标操作

1、点击操作

(1)单纯的元素点击 ==> 可通过操作:elem.click()

(2)通过链式调用(ActionChains)的方法进行点击 ;

? ? -? 元素定位 elem = driver.find_element('id','kw')

? ? -? 初始化动作链条: action = ActionChains(driver)

? ? -? 进行点击: action.click(elem).perform()

from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver import ActionChains

driver = webdriver.Chrome()
driver.implicitly_wait(10)  # 隐形等待
driver.get('http://www.baidu.com')
elem = driver.find_element('id','kw') # 定位输入框
elem.send_keys('haha')
send_elem = driver.find_element(By.ID,'su')   # 定位搜索按键

# 点击操作
# 方法一:直接通过元素进行点击操作
send_elem.click()

# 方法二:通过链式调用进行点击
action = ActionChains(driver)
action.click(send_elem).perform()

2、其他链式调用操作

元素定位  elem = driver.find_element('id','kw')  
初始化动作链条: action = ActionChains(driver)?
点击操作: action.click(elem).perform()     
双击操作: action.double_click(elem).perform()
右击操作: action.context_click(elem).perform()
悬停操作: action.move_to_element(elem).perform()
拖拽操作: action.drag_and_drop(elems,elem2).perform()
from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver import ActionChains

driver = webdriver.Chrome()
driver.implicitly_wait(10)  # 隐形等待
driver.get('http://www.baidu.com')
elem = driver.find_element('id','kw')  # 元素定位

action = ActionChains(driver)  # 初始化动作链条

action.click(elem).perform()   # 单击
# action.double_click(elem).perform()    # 双击
# action.context_click(elem).perform()   # 右击
# action.move_to_element(elem).perform()  # 移动,悬停
# action.drag_and_drop(elems,elem2).perform()  # 拖拽、移动(从elem1拖动到elem2)

二、下拉框操作

1、通过定位所需选中的元素,再点击click()  ==>   elem.click()
from selenium import webdriver

# 下拉框操作
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get(f'http://localhost:63342/PycharmProjects/NewpythonProject/04_WEB_testing/class_knowledge/%E4%B8%8B%E6%8B%89%E6%A1%86.html?_ijt=5rnvnlic1ja8r2m8kcr84a7gjl')
elem = driver.find_element('xpath','//option[@name="ly"]')
elem.click()  # 方法一,直接点击
2、通过另一种封装,先找到select元素,再把元素传入到Select中,
   s_obj= Select(elem)     把元素传入到Select 
   s_obj.select_by_visible_text('xx')    选中text文本
   s_obj.select_by_value('xx')    通过value值传入
   s_obj.select_by_index(2)   通过索引,从0开始
from selenium import webdriver
from selenium.webdriver.support.select import Select


driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get(f'http://localhost:63342/PycharmProjects/NewpythonProject/04_WEB_testing/class_knowledge/%E4%B8%8B%E6%8B%89%E6%A1%86.html?_ijt=5rnvnlic1ja8r2m8kcr84a7gjl')

s = driver.find_element('xpath','//select')
s_obj = Select(s)

# 三种方式:
s_obj.select_by_visible_text('旅游')  # 通过文本选中
s_obj.select_by_index(2)  # 通过索引获取,从0开始
s_obj.deselect_by_value('y')  # 通过option 的value属性获取,源码中option[value='y']

三、键盘操作

1、键盘基本操作

键盘操作:
elem.send_keys(Keys.CONTROL,'a')   # 键盘操作ctrl+a
elem.send_keys(Keys.CONTROL,Keys.SPACE)  # ctrl+空格

2、点击操作的四种方式

elem.send_keys(Keys.ENTER)  # 方法一,通过键盘操作回车键
elem.submit()   # 方法二:在form表单下,直接提交
elem.click()   # 方法三:直接点击操作
action = ActionChains(driver)
action.click(elem).perform()   # 方法四,通过链式调用进行提交 
from selenium.webdriver import ActionChains
from selenium import webdriver
from selenium.webdriver.common.keys import Keys


driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get('https://www.baidu.com')

elem = driver.find_element('id','kw')
elem.send_keys('haha')
elem.send_keys(Keys.ENTER)  # 方法一,通过键盘操作回车键
elem.submit()   # 方法二:在form表单下,直接提交
elem.click()   # 方法三:直接点击操作
action = ActionChains(driver)
action.click(elem).perform()   # 方法四,通过链式调用进行提交

# 其他键盘操作
elem.send_keys(Keys.CONTROL,'a')   # 键盘操作ctrl+a
elem.send_keys(Keys.CONTROL,Keys.SPACE)  # ctrl+空格

四、文件上传操作

1、文件上传的元素为input标签

? ?- send_keys(),发送文件路径

from selenium import webdriver
from pywinauto.keyboard import send_keys
import time


driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get(r'D:\PycharmProjects\NewpythonProject\04_WEB_testing\class_knowledge\文件上传.html')

# 方法一:input标签,可直接通过sens_keys传入文件
elem = driver.find_element('name','avatar')
elem.send_keys(r'C:\Users\lalanala\Desktop\csv.csv')
time.sleep(2)

2、非input标签,借助第三方工具

? -??pywinauto,可做window自动化测试,pc端软件也可??

? ? ? ? ? 安装:pip install pywinauto

from selenium import webdriver
import time
from pywinauto.keyboard import send_keys  # 此为pywinauto的send_keys
from selenium.webdriver import ActionChains
from pywinauto import Desktop

# 方法一:通过系统的send_key进行文件上传
driver = webdriver.Chrome()
driver.implicitly_wait(10)   # 隐形等待
driver.get(r'D:\PycharmProjects\NewpythonProject\04_WEB_testing\class_knowledge\文件上传.html')

time.sleep(2)
elem = driver.find_element('xpath',"//input[@name='avatar']")   # 定位上传框元素
action = ActionChains(driver)    # 初始化动作链条
action.click(elem).perform()    # 点击执行
time.sleep(2)
send_keys(r'C:\Users\lalanala\Desktop\csv.csv')   # 上传文件
send_keys('{VK_RETURN}')   # 确认


# 方法二:通过调用桌面程序进行上传
elem = driver.find_element('name','avatar')
action = ActionChains(driver)
action.click(elem).perform()
time.sleep(2)
app = Desktop()
dialog = app['打开']
dialog['Edit'].type_keys(r'C:\Users\lalanala\Desktop\csv.csv')
dialog['Button'].click()

? - 另一种上传方式,可跨平台上传,pyautogui

? ? ? ? ? ?安装:pip install pyautogui? /? ?pip install pillow==6.2.2

import pyautogui
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get(r'D:\PycharmProjects\NewpythonProject\04_WEB_testing\class_knowledge\文件上传.html')

time.sleep(1)
pyautogui.write(r'C:\Users\lalanala\Desktop\csv.csv')  # 传入文件
pyautogui.press('enter',2)    #点击确认

总结

先记录到此把,之后有拓展,再做扩展。

日常鸡汤:厉害的人都还在努力,不够聪明的人必须要更加的努力,才能有可能达成别人的成就,所以别放弃,一定要坚持,活到老 学到老,这句话一直很有道理。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 14:07:30  更:2021-07-22 14:09:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/22 23:43:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码