Web自动化---Selenium---常用API

一.下拉框选择

怎么操作?:

1.先定位下拉框元素,然后点击下拉框出现选项,定位对应的选项,然后点击选中

2.通过Select定位

          首先导入模块:

                from selenium.webdriver.support.select import Select

        方法1).Select (元素).select_by_value(value值)

        方法2).Select (元素).select_by_index(索引值)

        方法3).Select (元素).select_by_text(文本值)

#导入模块
from selenium import webdriver

from selenium.webdriver.support.select import Select

#实例化
driver = webdriver.Chrome()

driver.get('file:///E:/31%E6%E5%AE%9E%E4%BE%8B.html')

# # 定位点击下拉框
# driver.find_element_by_id('select').click()

# # 点击选中对应的选项
# driver.find_element_by_css_selector('option[value="sh"]').click()

ele = driver.find_element_by_id('select')

select = Select(ele)

# 通过value值来选择下拉选项
select.select_by_value("gz")

# 通过索引值进行定位
select.select_by_index(3)

#通过values值进行定位
select.select_by_value('bj')

# 通过文本值进行定位
select.select_by_visible_text('上海')

        

二.滚动条处理

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

步骤:

        1).准备js脚本

                js = 'window.scrollTo.(x,y)'          #左右滑动改变x轴,上下滑动改变y轴

        2).使用webdriver的execute_script(js脚本)的方法执行js脚本实现滚动条操作
                driver.excute_script(js)

 2. 聚焦到某个元素位置:
        1.定位需要聚焦的元素
        ele = driver.find_element_by_id('alerta')

        2.聚焦元素的js脚本
        js = 'arguments[0].scrollIntoView();'                       #固定js脚本

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

#导入模块
from selenium import webdriver
import time

#实例化
driver = webdriver.Chrome()

driver.get('file:///E:/31%E6%E5%AE%9E%E4%BE%8B.html')

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

# 聚焦到某个元素

# 定位需要聚焦的元素
ele = driver.find_element_by_id('alerta')

# 聚焦元素的js脚本
js = 'arguments[0].scrollIntoView();'

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

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

#导入模块
from selenium import webdriver
import time

#实例化
driver = webdriver.Chrome()
driver.get('file:///E:/31%E6%E5%AE%9E%E4%BE%8B.html')

# 定位账号然后输入内容
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)

# 早期版本的方法,不建议使用
# driver.switch_to_frame()

# 定位账号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.Chrome()

driver.get('file:///E:/31%E6%E5%AE%9E%E4%BE%8B.html')

# 获取当前句柄
current_handle = driver.current_window_handle
print(current_handle)

time.sleep(2)

driver.find_element_by_id("fw").click()

time.sleep(2)

# 当前句柄---原窗口句柄
print(driver.current_window_handle)


# 获取所有的页面句柄
print(driver.window_handles)


time.sleep(3)

# 切换回原页面
driver.switch_to.window(current_handle)

time.sleep(3)

# 通过索引获取句柄切换到新页面
driver.switch_to.window(driver.window_handles[1])

五.窗口切换

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

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

    driver.execute_script(js)

#导入模块
from selenium import webdriver
import time

driver = webdriver.Chrome()

driver.get('file:///E:/31%E6%E5%AE%9E%E4%BE%8B.html')


# 准备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:
        变量 = driver.switch_to.alert
        变量.accept()

    confirm:
        变量 = driver.switch_to.alert
        变量.accept()     点击确定
        变量.dismiss()    点击取消

    prompt:
        变量 = driver.switch_to.alert
        变量.accept()     点击确定
        变量.dismiss()    点击取消
        变量.send_keys(内容)    输入内容


        都可以使用: 变量.text          #获取弹窗的文字信息

    自定义弹窗

#准备js脚本,把display设置为空

js = 'document.getElemetById(元素id).style.display="none"'

#执行脚本

driver.excute_script(js)

六.单选框

概念
    在html代码里面 type是 radio 并且一组的单元 name属性值全部一样


语法
    元素.is_selected()                    #判断元素是否选中

from selenium import webdriver
import time

driver = webdriver.Firefox()

driver.get('file:///E:/310%E6%BAE%9E%E4%BE%8B.html')

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('file:///E:/310%E6%BAE%9E%E4%BE%8B.html')

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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值