selenium常用API

1.鼠标的操作

 举例说明:

第一步:先导包  

from selenium import webdriver 

from selenium.webdriver import Actionchains  #鼠标的导包

web=webdriver.Chrome() #选择谷歌驱动

web.get("http://baidu.com/") #选择URL网址

ele=web.find_element_by_link_text('新闻') # 定位超链接

第二步:鼠标的双击.右击.悬停.拖动.左击 操作

①双击 double_click

ActionChains(web).double_click(ele).perform()

②右击 context_click

 ActionChains(web).context_click(ele).perform()

③悬停  move_to_element

ele2=web.find_element_by_css_selector('span[name="tj_settingicon"]')
ActionChains(web).move_to_element(ele2).perform()

④拖动 drag_and_drop(定位元素3,定位元素4); drag_and_drop_by_offset(ele3,x轴,y轴)

 ActionChains(web).drag_and_drop(ele3,ele4).perform()
ActionChains(web).drag_and_drop_by_offset(ele3,800,200).perform()

⑤左击 click_hold

ActionChains(web).click_hold(ele).perform()

2.键盘操作

#第一步先导包
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('软件开发')

#第二步

# 键盘的使用必须和 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)

3.下拉框操作

#第一步:导包 

from selenium import webdriver
#导入selenium模块中 select类的包 ---->alt+enter导包
from selenium.webdriver.support.select import Select
driver=webdriver.Chrome()
driver.get('url') #含下拉框的URL


#第二步

#定位select下拉框标签元素
ele=driver.find_element_by_css_selector('select[name="selecta"]')

#第三步: 定位下拉框中的内容 的三三种方式

Select(ele).select_by_value("value的属性值")

Select(ele).select_by_index(索引)  #索引从0开始

Select(ele).select_by_visible_text('文本')

4.滚动条的处理: 执行js脚本

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

方式一

第一步:准备js脚本

js='window.scrollTo(x轴,y轴)'  #输入数字

第二步:执行脚本

driver.execute_script(js)

#导包
from selenium import webdriver

driver = webdriver.Chrome()

driver.get('http://www.baidu.com/')

#准备js脚本

js = 'window.scrollTo(0,1000)'

#执行脚本

driver.execute_script(js)

方式二 :聚焦导某个元素

# 定位需要聚焦的元素

ele = driver.find_element_by_id('id属性值')

# 聚焦元素的js脚本

js = 'arguments[0].scrollIntoView();'

# 执行脚本传入元素

driver.execute_script(js,ele)


5.HTML页面嵌套

前要:

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

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

什么时候去使用切换的方法?
    1.当你定位元素能够定位但是在selenium里面找不到元素的时候去判断是否因为 iframe嵌套引起
    2.在F12 elements里面定位该元素,然后在下方绝对路径里面查看是否有 iframe frame
      存在则需要进行页面的切换才能操作
from selenium import webdriver
driver=webdriver.Chrome()
driver.get('file:///D:/%E6%B5%8B%E8%AF%95%E5%AD%A6%E4%B9%A0/5.21web%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95day02/resources/%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')
driver.maximize_window()

ele=driver.find_element_by_id('user').send_keys('账号')
ele1 = driver.find_element_by_css_selector('iframe[id="idframe1"]')
#页面切换
driver.switch_to.frame('myframe1') # iframe标签的 name或id的属性值
# driver.switch_to.frame(0)   # iframe的索引  从0开始
# driver.switch_to.frame(ele1)   #定位iframe的元素

ele2=driver.find_element_by_id('userA').send_keys('账号A')   #是嵌套的页面的元素


# 退出嵌套 的两种方式
# driver.switch_to.default_content() #退出所有嵌套回到默认页面
driver.switch_to.parent_frame() #退出当前页面

ele3=driver.find_element_by_id('password').send_keys('密码')

driver.quit() #关闭浏览器
语法
    怎么进行页面切换:
        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.后台的菜单栏

6.多窗口切换

方式一: 句柄切换---->每个打开的页面都有唯一的句柄

from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('file:///D:/%E6%B5%8B%E8%AF%95%E5%AD%A6%E4%B9%A0/5.21web%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95day02/resources/%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')

time.sleep(4)
ele=driver.find_element_by_css_selector('a[id="fw"]').click() #点击一个 含target属性的a标签
time.sleep(4)
info=driver.window_handles #获取所有页面的句柄 返回一个列表

#切换窗口: switch_to.window(句柄)
driver.switch_to.window(info[0])
time.sleep(4)

句柄语法:

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

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

方式二:js脚本

# 通过js脚本移除target属性

js = 'document.getElementById("fw").removeAttribute("target")'

driver.execute_script(js)

 
#利用js脚本切换窗口:去除a标签的target属性,就不会打开新窗口,执行back() 回退就可以了

#js脚本移除target属性 js=' 内容 '
js='document.getElementById("fw").removeAttribute("target")'  #可以ById属性 也可ByName,ByClass 属性
#执行脚本:execute_script(js)
driver.execute_script(js)  #就已经移除target属性了

#再打开点击a标签\
ele2=driver.find_element_by_css_selector('a[id="fw"]').click()
time.sleep(3)
#回退
driver.back()
time.sleep(3)
# driver.quit()

7.弹窗处理

自定义弹窗和原生弹窗(alert,confirm,prompt)

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

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

    执行js脚本
        driver.execute_script(js)
from selenium import webdriver
import time

#自定义弹窗
driver=webdriver.Chrome()
driver.get('https://cd.itsource.cn/')
time.sleep(3)
#js脚本把style属性设置为空 即style.display="none"

js='document.getElementById("div_company_mini").style.display="none" ' # div_company_mini弹窗id的属性
#执行js脚本 execute_script(js脚本)
driver.execute_script(js)
time.sleep(3)
driver.quit()



#原生弹窗
driver=webdriver.Firefox()
driver.get('file:///D:/%E6%B5%8B%E8%AF%95%E5%AD%A6%E4%B9%A0/5.21web%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95day02/resources/%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')
driver.maximize_window()
#获取原生弹窗---->alert,confirm,prompt 都是它:driver.switch_to.alert

#alert的原生弹窗 :只有确认
driver.find_element_by_id("alert").click()
alert=driver.switch_to.alert #获取弹窗
time.sleep(3)
#点击确认
alert.accept()
time.sleep(3)

#confirm的原生弹窗:确认和取消
driver.find_element_by_id("confirm").click()
confirm=driver.switch_to.alert
time.sleep(3)
#点击确认
confirm.accept()
time.sleep(3)
#点击取消
driver.find_element_by_id("confirm").click()
confirm.dismiss()
time.sleep(3)

9.单选框,多选框

单选框 :元素.is_selected() 判断元素是否选中

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


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

"""

from selenium import webdriver
import time

driver = webdriver.Firefox()

driver.get('file:///E:/310%E6%B5%8B%E8%AF%95%E7%B2%BE%E8%8B%B1%E7%8F%AD/10web%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/2023-05-22web%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95day03/resources/%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')

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

多选框:元素.is_selected() 判断元素是否选中

步骤:

1.获取所有的元素

eles = driver.find_elements_by_name('name属性值')  返回一个列表

2.1.遍历全部

for ele in eles:

        if not ele.is_selected():

                ele.click()

2.2根据要求遍历

info=('value属性值1','value属性值2')   #也可以是其他的属性名,不一定是value属性名

for ele in eles:

        if ele.get_attribute('value') in info:

                if not ele.is_selected():

                        ele.click()

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

"""

from selenium import webdriver
import time

driver = webdriver.Firefox()

driver.get(
    'file:///E:/310%E6%B5%8B%E8%AF%95%E7%B2%BE%E8%8B%B1%E7%8F%AD/10web%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/2023-05-22web%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95day03/resources/%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')

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值