常用API

1.鼠标事件

ActionChains 类鼠标操作的常用方法:
  context_click() 右击
  double_click()  双击
  drag_and_drop() 拖动
  move_to_element() 鼠标悬停在一个元素上
click_and_hold() 按下鼠标左键在一个元素上

1.1导入包:ActionChains

from selenium import webdriver
from selenium.webdriver import ActionChains

driver = webdriver.Chrome()

1.2.定位需要鼠标操作的元素

div1 = driver.find_element_by_id('div1')
div2 = driver.find_element_by_id('div2')

1.3.执行鼠标事件

鼠标拖动

    ActionChains(driver).drag_and_drop(原始元素,目标元素).perform()

指定坐标点的位置进行拖动(重要)  x轴和y轴以左上角的原点位置为(0,0)

    ActionChains(driver).drag_and_drop_by_offset(目标元素, x轴坐标, y轴坐标).perform()


  double_click()  双击
      ActionChains(driver).double_click(元素).perfprm
  context_click() 右击
      ActionChains(driver).context_click(元素).perfprm
  move_to_element() 鼠标悬停在一个元素上
      ActionChains(driver).move_to_element(元素).perfprm
  click_and_hold() 按下鼠标左键在一个元素上
      ActionChains(driver).click_and_hold(元素).perfprm

2.键盘事件

导入:

1.from selenium import webdriver  
from selenium.webdriver.common.keys import Keys

使用Keys类来处理键盘操作:

send_keys(Keys.BACK_SPACE) 删除键(Backspace)
send_keys(Keys.SPACE) 空格键(Space)
send_keys(Keys.TAB) Tab键
send_keys(Keys.ESCAPE) 回退键(Esc)
send_keys(Keys.ENTER) 回车键(Enter)
send_keys(Keys.CONTROL,'a') 全选(Ctrl+A)

 

5.键盘事件 
6."""  
7.driver = webdriver.Firefox()  
8.driver.get("https://www.baidu.com")  
9.driver.find_element_by_id("kw").send_keys("Selenium")  
10.time.sleep(2)  
11.# Ctrl+A 全选操作  
12.driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')  
13.time.sleep(2)  
14.# Ctrl+C 复制操作  
15.driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'c')  
time.sleep(2)

3.下拉菜单选

导入:Select

from selenium import webdriver
import time
# 导入
from selenium.webdriver.support.ui import Select
driver = webdriver.Chrome()
通过id定位下拉框:
# 通过id定位下拉框
 select = Select(driver.find_element_by_id('selectA'))

选择:

# 通过value来选择
select.select_by_value(value值)
time.sleep(3)
# 通过索引选择
select.select_by_index(索引值)    #索引从0开始
time.sleep(3)
#
# 通过文本选择
select.select_by_visible_text('A广州')
time.sleep(3)

4.滚动条操作

# 滚动条操作:
#       1.js = 'window.scrollTo(x,y)'   左右x轴,上下y轴
#       2.driver.execute_script(js脚本)


js = 'window.scrollTo(0,1000)'
time.sleep(3)
driver.execute_script(js)
time.sleep(3)

5.聚焦到某个元素位置

li = driver.find_element_by_css_selector('input[onclick="al()"]')
js = 'arguments[0].scrollIntoView();'
driver.execute_script(js,li)
time.sleep(3)

6.iframe操作

iframe是什么?  iframe是前端常用的一个标签,用于HTML页面的嵌套
会导致嵌套的页面元素能定位,但是实际上元素不在本页面

想要定位到iframe里面的元素,需要进行页面的切换
什么时候去使用切换的方法?
    1.当你定位元素能够定位但是在selenium里面找不到元素的时候去判断是否因为 iframe嵌套引起
    2.在F12 elements里面定位该元素,然后在下方绝对路径里面查看是否有 iframe frame
      存在则需要进行页面的切换才能操作
语法
    怎么进行页面切换:
        driver.switch_to.frame(name值或者id值)
        driver.switch_to.frame(索引值)     索引从0开始
        driver.switch_to.frame(定位的元素)

    退出嵌套页面
        1.退出所有的嵌套页面
            driver.switch_to.default_content()
        2.只退出一层嵌套
            driver.switch_to.parent_frame()

    iframe场景的应用场景:
        1.登录
        2.富文本编辑框
        3.后台的菜单栏

7.多窗口切换

在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要切换到新打开的窗口上进行操作。switch_to.window()方法可以实现在不同的窗口之间切换

current_window_handle 获得当前窗口句柄

window_handles 获取所有窗口句柄

switch_to.window() 切换窗口

步骤

    1.0 获取当前窗口句柄

        driver.current_window_handle

    1.1 点击触发多窗口出现的元素(链接)

    1.2 获取所有窗口的句柄

        driver.window_handles

    1.3 进入到新窗口中

        driver.switch_to.window(新窗口句柄)

    1.4 操作新窗口的元素

    1.5 退出新窗口

        driver.switch_to.window(原窗口句柄)

8.单选框和复选框

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get('file:///C:/Users/Administrator/Desktop/%E8%AF%BE%E4%BB%B6/%E8%AF%BE%E4%BB%B6/%E7%BB%83%E4%B9%A0%E9%A1%B5%E9%9D%A2/%E6%B3%A8%E5%86%8C%E5%AE%9E%E4%BE%8B.html')

#   单选框:
#       在HTML里面,type属性是radio,并且一组的单元name属性值全部一样
# li = driver.find_element_by_id('jz')
#
# # 判断元素是否选择
# li.is_selected()
# li.click()
# time.sleep(2)

# 多选框在HTML代码里面,type属性是checkbox,name属性是相同的
#   获取所有的元素
li = driver.find_elements_by_name('checkbox')
print(li)
time.sleep(2)
# 遍历全部选中
# for i in li:
#     if not i.is_selected():
#         i.click()

# time.sleep(2)

li2 = ('购物','汽车')
# 遍历全部选中
for i in li:
    if i.get_attribute('value') in li2: # 判断
        if not i.is_selected():
            i.click()
time.sleep(2)

driver.quit()

​​​​​​​9.弹窗处理

原生弹窗:

prompt弹窗:有一个输入框,一个确认按钮,一个取消按钮

alert弹窗:一个确认按钮

confirm弹窗:一个确认按钮,一个取消按钮

 # alert弹窗处理:
driver.find_element_by_id('alert').click()
time.sleep(2)

# 获取页面所有弹窗
li = driver.switch_to.alert
time.sleep(2)
print(li)

# 点击确认按钮
li.accept()

# confirm弹窗处理
driver.find_element_by_id('confirm').click()
li1 = driver.switch_to.alert
time.sleep(2)

# 点击确认按钮
li1.accept()
time.sleep(2)

# 点击取消
li1.dismiss()
time.sleep(2)

# prompt弹窗处理
# 1.根据id定位并点击
driver.find_element_by_id('prompt').click()
#
# # 获取页面所有弹窗
li1 = driver.switch_to.alert
time.sleep(2)
#
# # 输入
li1.send_keys('111')
time.sleep(2)

# 点击确认按钮
li1.accept()
time.sleep(2)

# 去除自定义弹窗:
#       js脚本去除,把显示属性设置为None
#    变量 = document.getElementById(id定位)
#   设置为空:
#    变量.style.display = 'None'
#   执行js脚本:
#    driver.execute_script(变量)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值