美文网首页
selenium定位

selenium定位

作者: 草木山川 | 来源:发表于2021-06-19 00:01 被阅读0次
通过id定位:find_element_by_id()
通过 name 定位:find_element_by_name()
通过 tag 定位:find_element_by_tag_name()
通过 class 定位:find_element_by_class_name()
通过 css 定位:find_element_by_css_selector()
通过 link 定位:find_element_by_link_text()
通过 partial_link 定位: find_element_by_partial_link_text()
通过 xpath 定位:find_element_by_xpath()
XPath语法
表达式 描述
nodename(节点名称) 选取此节点的所有子节点
/ 从根节点选取
// 从匹配选择的当前节点 选取所有符合的节点
. 选取当前节点
.. 选取当前节点的父节点
@ 选取属性
* 匹配任何元素节点
@* 匹配任何属性节点
node() 匹配任何类型的节点
CSS选择器语法
表达式 示例 示例说明
.class .info 选择所有class="info"的元素
#id #firstname 选择所有id="firstname"的元素
* * 选择所有元素
element p 选择所有<p>元素
element, element div, p 选择所有<div>元素和<p>元素
element element div p 选择<div>元素内的所有<p>元素
element>element div>p 选择所有父级是 <div> 元素的 <p> 元素
element+element div+p 选择所有紧跟在 <div> 元素之后的第一个 <p> 元素
通过xpath中id定位input框
# 通过xpath里的id定位
driver.find_element_by_xpath('//*[@id="app"]/div/form/div[1]/div/div/input').clear()
driver.find_element_by_xpath('//*[@id="app"]/div/form/div[1]/div/div/input').send_keys('admin')
image.png
通过xpath中class定位
driver.find_element_by_xpath('//*[@class="el-pager"]/li[3]').click()
获取div中的内容用text
# 获取div中的内容用text
value = driver.find_element_by_xpath('//*[@id="app"]/div/div[2]/section/div/form/div/div[1]/div/div/div[2]').text
获取input框中的内容使用get_attribute('value')
test_text = driver.find_element_by_css_selector('.el-form>div:nth-child(1)>div>div>input').get_attribute('value')
通过selector选择器定位button,存在多个类时,类之间用.(点)
# 定位button按钮
driver.find_element_by_css_selector('.el-button.el-button--primary.el-button--mini.is-plain').click()
image.png
通过selector选择器定位input,同一层级存在多个相同节点时,使用element:nth-child(num)来取相应节点
# 定位input框
driver.find_element_by_css_selector('.el-form>div:nth-child(1)>div>div>input').send_keys('test新项目')
image.png
同一层级多个元素时,选择其中一个时,使用selecter和xpath定位
# 获取第一个class=el-table__row下的所有标签
td_list = driver.find_elements_by_css_selector('.el-table__row:nth-child(1)>*')
td_list2 = driver.find_elements_by_xpath('//*[@class="el-table__row"][1]/*')
print(len(td_list), len(td_list2))
上传图片,需先安装pywin32,命令:pip install pywin32
import win32gui
import win32con
# FindWindow(param1,param2):param1需要传入窗口的类名,param2需要传入窗口的标题,自顶层窗口(也就是桌面)开始搜索条件匹配的窗体
dialog = win32gui.FindWindow("#32770", "打开")  # 一级窗口
# FindWindowEx(param1,param2,param3,param4),查找子窗体
# param1不为0,则搜索句柄为param1窗体下的子窗体
# param2不为0,按照顺序从param2向后开始搜索子窗体
# param3窗体的类名
# param4窗口的名字
ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, "ComboBoxEx32", None)  # 二级窗口
comboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, "ComboBox", None)  # 三级窗口
edit = win32gui.FindWindowEx(comboBox, 0, 'Edit', None)  # 找到目标文本框
button = win32gui.FindWindowEx(dialog, 0, 'Button', None)  # 找到打开按钮
time.sleep(1)
# SendMessage(param1,param2,param3,param4)发送目标文本到文本框
# param1:接收消息的句柄
# param2:指定发送的消息
# param3:none
# param3:发送内容
win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, r'F:\picture\ps\2.png')
time.sleep(1)
win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)  # 点击打开按钮
image.png
获取元素的长度使用len(),要使用find_elements
# 使用driver.find_elements来获取元素的个数,driver.find_elements返回的是多个元素,driver.find_element返回的是单个元素
element_list = driver.find_elements_by_css_selector('.number') 
li_len = str(len(element_list))
鼠标点击事件
from selenium.webdriver.common.action_chains import ActionChains
# 鼠标左键操作
action = ActionChains(driver)
action.click(driver.find_element_by_name('file')).perform()

相关文章

网友评论

      本文标题:selenium定位

      本文链接:https://www.haomeiwen.com/subject/ijdxyltx.html