Selenium操控元素

Selenium操控元素介绍:

Selenium操控元素必须要定位后才能执行,理论上Selenium可以模拟任何操作,比如单击、右击、滑动、滚动、复制粘贴、文本输入等。操作方式分为三大类:常规操作、鼠标事件操作、键盘事件操作。

常规操作:

常规操作包括文本清除、文本输入、单击元素、提交表单、获取元素值等,以百度首页为例(https://www.baidu.com/)具体使用方法入下:

import time
from selenium import webdriver
url='https://www.baidu.com/'
driver = webdriver.Chrome()
driver.get(url)
#定位到输入框并输入’selenium‘
driver.find_element_by_id('kw').send_keys('Selenium')
time.sleep(1)
#定位到百度一下并单击
driver.find_element_by_id('su').click()
time.sleep(2)
#定位到贴吧并点击跳转
driver.find_element_by_partial_link_text('贴吧').click()
time.sleep(3)
#定位selenium吧描述并获取其内容
text=driver.find_element_by_css_selector('#pagelet_frs-header\/pagelet\/head > div > div.head_content > div.card_top_wrap.clearfix.card_top_theme > div.card_top.clearfix > p').text
print(text)
time.sleep(3)
#定位到贴吧输入框并清除其中内容
driver.find_element_by_id('wd1').clear()
time.sleep(3)
driver.quit()

除了上面演示的操作外还有一些是比较常见的:

#submit用于表单提交
driver.find_element_by_id('X').submit()
#获取元素在页面中的坐标位置,格式为{'y':100,'x':200}
location = driver.find_element_by_id('X').location
#获取某个元素的属性,如获取X元素的id属性
attribute = driver.find_element_by_id('X').get_attribute('id')
# 判断元素在页面是否可见
res = driver.find_element_by_id('X').is_displayed()
# 判断元素是否被选,一般用于checkbox和radio
res = driver.find_element_by_id('X').is_selected()
from selenium.webdriver.support.select import Select
#根据下拉框的索引来选取
Select(driver.find_element_by_id('X')).select_by_index('1')
#根据下拉框的value属性来选取
Select(driver.find_element_by_id('X')).select_by_index('Python')
#根据下拉框的值来选取
Select(driver.find_element_by_id('X')).select_by_visible_text('Python3')

具体演示一些下拉框选取这个操作:
随便写了一个HTML的下拉框页面
在这里插入图片描述
首先需要定位到这个下拉框元素(记住不是定位它的子元素)

driver.find_element_by_name('ShippingMethod')

在这里插入图片描述
然后通过将其作为参数传入Select()类,再选择不同的方法进行下拉框选择(比如通过索引)

Select(driver.find_element_by_name('ShippingMethod')).select_by_index('2')

最终结果:
在这里插入图片描述
如果需要需要一些简单的HTML页面做练习可以到我的码云获取:我的仓库

鼠标事件操作:

鼠标事件操作需要Selenium的ActionChains类来实现,ActionChains中有很多鼠标操作方法,下面就列举一些常用的方法:

方法说明示例
perform鼠标执行事件click(element).perform()执行这个单击事件
reset_actions取消鼠标事件click(element).reset_actions()取消这个点击事件
click鼠标单击click(element)
click_and_hold长按鼠标左键click_and_hold(element)
context_click长按鼠标右键context_click(element)
double_click鼠标双击double_click(element)
drag_and_drop对一个元素长按左键直到移至另一个元素后释放drag_and_drop(element1,element2)
drag_and_drop_by_offset对元素长按左键并移动到指定坐标drag_and_drop_by_offset(element,x,y)
move_to_element将鼠标移至某元素move_to_element(element)

上述操作都需要将ActionChains实例化后才能使用:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
url='https://www.baidu.com/'
driver = webdriver.Chrome()
driver.get(url)
element = driver.find_element_by_id('X')
#实例化ActionChains并调用click_and_hold()方法,再调用perform执行这个事件
ActionChains(driver).click_and_hold(element).perform()

键盘事件操作:

键盘事件操作主要通过send_keys方法和Keys类中的快捷键共同完成,以百度首页搜索框为例介绍一下使用方法:

import time
from selenium import webdriver
from  selenium.webdriver.common.keys import Keys
url='https://www.baidu.com/'
driver = webdriver.Chrome()
driver.get(url)
# 获取输入框元素
element = driver.find_element_by_id('kw')
# 输入'Selenium键盘操作Z'
element.send_keys('Selenium键盘操作Z')
time.sleep(2)
# 删除最后一个文字
element.send_keys(Keys.BACK_SPACE)
time.sleep(2)
#添加一个空格+‘介绍’
element.send_keys(Keys.SPACE)
element.send_keys('介绍')
time.sleep(2)
# Ctrl+a全选输入框中的内容
element.send_keys(Keys.CONTROL,'a')
time.sleep(2)
# Ctrl+x剪切输入框的内容
element.send_keys(Keys.CONTROL,'x')
time.sleep(2)
# Ctrl+v复制
element.send_keys(Keys.CONTROL,'v')
time.sleep(2)
# 回车
driver.find_element_by_id('su').send_keys(Keys.ENTER)
  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值