selenium的常用API

一.鼠标事件

#.语法

1.导包
    from selenium.webdriver import ActionChains

    ActionChains(driver).方法名(元素).preform()


    双击:
        ActionChains(driver).double_click(ele).perform()

    右击(重要):
        ActionChains(driver).context_click(ele).perform()

    鼠标悬停(重要):
        ActionChains(driver).move_to_element(ele).perform()

拖动鼠标:

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

指定坐标点拖动----x轴和y轴以左上角圆点位置为(0,0):

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

例子:


    定位元素
 ele = driver.find_element_by_link_text('元素')


  实例化鼠标的对象
  action_chains = ActionChains(driver)


鼠标的双击的方法
ActionChains(driver).double_click(ele).perform()


driver.maximize_window()


右击
ele = driver.find_element_by_css_selector('a[id="s-top-loginbtn"]')


鼠标进行右击
ActionChains(driver).context_click(ele).perform()

ele = driver.find_element_by_css_selector('span[id="s-usersetting-top"]')


鼠标悬停
ActionChains(driver).move_to_element(ele).perform()

driver.find_element_by_id('kw').send_keys()

ele = driver.find_element_by_id('su')


按下鼠标的左键
ActionChains(driver).click_and_hold(ele).perform()

二.键盘事件

1.导包

from selenium.webdriver.common.keys import Keys
键盘的使用必须与send_keys结合起来

        send_keys(keys.BACK_SPACE)                键盘键入删除键

        send_keys(keys.TAB)                                 键盘键入tab键

        send_keys(keys.ENTER)                            键盘键入回车键

例子:

from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
driver.find_element_by_id('kw').send_keys()
time.sleep(3)
# 键盘的使用必须和 send_keys 结合起来
driver.find_element_by_id('kw').send_keys(Keys.BACK_SPACE)
time.sleep(2)
# 键盘写入tab键
driver.find_element_by_id('kw').send_keys(Keys.TAB)
time.sleep(3)
# 键盘写入回车键
driver.find_element_by_id('kw').send_keys(Keys.ENTER)


三.下拉框选择

1.操作

          1)通过元素的基本操作,进行下拉框定位

          2).先定位下拉框,点击下拉出现选项

          3).定位选项,再选中选项

例子:

from selenium import webdriver
from selenium.webdriver.support.select import Select
import time
driver = webdriver.Firefox()
driver.get('网页链接地址') # 复制一个网页地址
# 之前的方法
driver.find_element_by_id("selectA").click()
driver.find_element_by_css_selector('option[value="cq"]').click()

2.通过select定位

1.导包

 from selenium.webdriver.support.select import Select

 2.方法

                通过value选择                             select.select_by_value(value值)

                通过索引选择 索引从0开始         select.select_by_index(索引值)

                通过元素文本选择                       select.select_by_visible_text(文本值)

例子:

from selenium import webdriver
from selenium.webdriver.support.select import Select
import time
driver = webdriver.Firefox()
driver.get(网页地址链接) # 复制一个网页地址
# 定位到下拉框元素
ele = driver.find_element_by_id("selectA")
# 实例化select对象
select = Select(ele)
time.sleep(3)
# 通过value选择
select.select_by_value("gz")
time.sleep(3)
# 通过索引选择
select.select_by_index(3)
time.sleep(3)
# 通过元素文本选择
select.select_by_visible_text("A北京")
time.sleep(3)
driver.quit()


四.滚动条处理

      在webdriver里面本身没有提供对滚动条的操作,但是提供了一个执行js脚本的方法
      因此可以通过js脚本来执行滚动条上下滑动

语法:

1.准备js脚本
       window.scrollTo(x,y)    左右滑动改变x轴,上下滑动改变y轴
 2.使用webdriver的execute_script(js脚本)的方法执行js脚本实现滚动条操作
       driver.execute_script(js)

例子:

from selenium import webdriver

import time

driver = webdriver.Chrome()

driver.get(网页地址) # 复制一个网页地址

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

聚焦到某个元素位置:
        1.定位需要聚焦的元素
        ele = driver.find_element_by_id('alerta')
        
        2.聚焦元素的js脚本
        js = 'arguments[0].scrollIntoView();'

        3.执行脚本传入元素
        driver.execute_script(js,ele)

例子:

from selenium import webdriver
import time
 
driver = webdriver.Firefox()
driver.get(网页地址) # 复制一个网页地址
time.sleep(2)
# 准备需要聚焦到的元素
ele = driver.find_element_by_id("alerta")
# 准备js脚本聚焦到元素
js = "arguments[0].scrollIntoView();"
# 执行js脚本,聚焦到某元素
driver.execute_script(js, ele)


五.iframe操作

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

想要定位到iframe里面的元素,需要进行切换

怎么去切换:

         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.后台的菜单栏

例子:

from selenium import webdriver

import time

driver = webdriver.Chrome()

driver.get('网页地址') # 复制一个网页地址进行

# 定位账号然后输入内容
driver.find_element_by_css_selector('input[id="user"]').send_keys('admin')

# 执行滚动到底部
js = 'window.scrollTo(0,1000)'
driver.execute_script(js)

time.sleep(2)
# 页面切换

# 通过frame的name切换页面
# driver.switch_to.frame('myframe1')

# 通过frame的id进行页面切换
# driver.switch_to.frame('idframe1')

# 通过frame的索引值切换  从0开始
# driver.switch_to.frame(0)

# 通过元素定位来切换
ele = driver.find_element_by_css_selector('iframe[id="idframe1"]')
driver.switch_to.frame(ele)

# 定位账号A输入内容
driver.find_element_by_css_selector('input[id="userA"]').send_keys('adminA')


# 切换回默认页面,退出所有的嵌套
# driver.switch_to.default_content()

# 只退出一层嵌套
driver.switch_to.parent_frame()

driver.find_element_by_id('password').send_keys('123456')

六.多窗口切换

概念:
    窗口切换:
        在超链接标签(a)里面存在 target=_blank 的时候点击会打开一个新的页面

    窗口句柄:
        获取窗口句柄
            driver.current_window_handle   获取当前页面(原页面)的句柄
            driver.window_handles    获取所有页面的句柄,返回一个列表

     切换窗口:
            driver.switch_to.window(句柄)
 

例子:

from selenium import webdriver
import time
 
driver = webdriver.Firefox()
driver.get(网页地址) # 复制一个网页地址进去
time.sleep(2)
# 获取当前页面句柄
curr1 = driver.current_window_handle
print(curr1)
# 定位到新浪新闻并点击
driver.find_element_by_id("fw").click()
time.sleep(2)
# 获取所有页面句柄,返回一个列表
curr2 = driver.window_handles
print(curr2)
# 切换回原页面
driver.switch_to.window(curr1)
time.sleep(2)
# 根据索引切换至新浪页面
driver.switch_to.window(curr2[1])
time.sleep(2)
# 根据索引切换回原页面
driver.switch_to.window(curr2[0])
time.sleep(2)
# 关闭页面
driver.quit()

多窗口切换方法2

     通过js脚本移除target属性
            js = 'document.getElementById("fw").removeAttribute("target")'

            driver.execute_script(js)

例子:


from selenium import webdriver
import time

driver = webdriver.Chrome()

driver.get('网页地址') # 复制一个网页地址


# 准备js脚本
js = 'document.getElementById("fw").removeAttribute("target")'

# 执行js脚本去掉target属性
driver.execute_script(js)

driver.find_element_by_id('fw').click()

time.sleep(3)

# 回到原页面
driver.back()

七.弹窗处理

概念:

 为什么要取消弹窗?
        因为存在弹窗之后页面的元素无法操作

  原生弹窗:
        alert:只有一个确定按钮
        confirm:有一个确定按钮,一个取消按钮
        prompt:有一个输入框,一个确定按钮,一个取消按钮

例子:

# alert原生弹窗
# 获取页面上原生的弹窗
my——alert= driver.switvh_to.alert
# 点击确定按钮
print(my_alert.text)

confirm:变量=driver.switch_to.alert

        变量.accept() 点击确定

        变量.dismiss() 点击取消

prompt:同confirm一样

               多一个 变量.send_keys(内容) 输入内容

八.自定义弹窗

概念:就是没有提供的方法去去除,可以通过执行js脚本来去除自定义的弹窗

语法:
    js脚本,把显示属性设置为空
    js = 'document.getElementById("iframe_company_mini_div").style.display ="none"'

    执行js脚本
        driver.execute_script(js)

九.单选框

概念:
    在html代码里面 type是 radio 并且一组的单元 name属性值全部一样
语法:元素.is_selected()    判断元素是否选中

例子:


from selenium import webdriver
import time

driver = webdriver.Firefox()  

driver.get('网页地址') # 复制一个网页地址进去

time.sleep(2)

li = driver.find_element_by_id('li')
# 是否选中


driver.find_element_by_id('jz').click()

print(li.is_selected())
time.sleep(3)
if li.is_selected():
    pass
else:
    li.click()

li.click()

time.sleep(10)
driver.quit()

十.多选框

概念: 多选框是html代码里面 type属性是 checkbox,name属性相同

全选:


from selenium import webdriver
import time

driver = webdriver.Firefox()

driver.get(网页地址) # 复制一个网页地址
 
time.sleep(2)


# 全选

# 获取所有的元素,
eles = driver.find_elements_by_name('checkbox')
print(eles)

# # 遍历全部选中
# for ele in eles:
#     if not ele.is_selected():
#         ele.click()

option = ("购物", "旅游")
for ele in eles:
    # 判断获取的属性是否存在选项中
    if ele.get_attribute('value') in option:
        # 判断是否已经被选中
        if not ele.is_selected():
            # 没有选中才进行点击选中
            ele.click()


time.sleep(10)
driver.quit()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值