selenium-webdriver API

1.定位元素

1)id、name、class、tag_name 

iddriver.find_element(By.ID,'kw')
namedriver.find_element(By.NME,'wd')
classdriver.find_element(By.CLASS,'s_ipt')
tag_namedriver.find_element(By.TAG_NAME,'input')    # <div> <input>等

2)link_text、partial_link_text

link定位driver.find_element(By.LINK_TEXT,'图片')
partial linkdriver.find_element(By.PARTIAL_LINK_TEXT,'图')

3)XPATH

绝对路径driver.find_element(By.XPATH,'/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input')
元素属性路径driver.find_element(By.XPATH,'//*[@id="kw"]')

4)CSS定位

2.控制浏览器

1)控制大小

最大化driver.maximize_window()
最小化driver.minimize_window()
设置尺寸drivet.set_window_size(480,800)

2)控制前进和后退

前进driver.back()
后退driver.forward()

3)模拟刷新

刷新driver.refresh()

3.元素操作

4.鼠标事件

from selenium.webdriver.common.action_chains import ActionChains as AChains 
执行所有ActionChains中存储的行为perform()
右击AChains(driver).context_click(element_aaa).perform()
鼠标悬停AChain(driver).move_to_element(element_aaa).perform()
鼠标拖放AChain(driver).drag_and_drop(elem_aaa,elem_bbb).perform()

5.键盘事件

from selenium.webdrive.common.keys import Keys

格式:

elem_aa.send_keys()

常用:

键入elem.send_keys("QQ音乐")
回车elem.send_keys(Keys.Enter)
删除elem.send_keys(Keys.BACK_SPACE)
制表elem.send_keys(Keys.TAB)
空格elem.send_keys(Keys.SPACE)
回退elem.send_keys(Keys.ESCAPE)
全选elem.send_keys(Keys.CONTROL,‘a’)
复制elem.send_keys(Keys.CONTROL,‘c’)
F1elem.send_keys(Keys.F1)

6.获取验证信息

print一些东西

print(driver.title)
print(driver.current_url)

7.设置元素等待

1.显式等待

导入相应的库

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

设置等待异常抛出

WebDriverWait(driver,5,0.5).until(EC.presence_of_element_located((By.ID,"kw2")))

for循环等待

print(driver.title)
print(driver.current_url)
print(ctime())
for i in range(10):
    try:
        kw22=driver.find_element(By.ID,"kw22")
        if kw22.is_displayed():
            break
    except:pass
    sleep(1)
else:
    print("timeout")
driver.close()
print(ctime())

2.隐式等待

3.sleep休眠方法

8.定位一组元素

kws=driver.find_elements(By.TAG_NAME,"input")

9.多表单切换

界面有iframe的情况

# 定位到iframe

iframe=driver.find_element(By.ID,"id")
iframe1=driver.find_element(By.XPATH,"XPATH1")
iframe2=driver.find_element(By.XPATH,"XPATH2")

# 切换到iframe

driver.switch_to.frame(iframe)

# 如果有嵌套

driver.switch_to.frame(iframe1)
driver.switch_to.frame(iframe2)

#返回父iframe

driver.switch_to.patent_frame()

# 退出iframe

driver.switch_to.default_content()

10.多窗口切换

1.先获取handles

handles=driver.window_handles

2.根据handles切换窗口

# 1和-1可以理解为从左向右和从右向左
driver.switch_to.window(handles[0])
driver.switch_to.window(handles[1])
driver.switch_to.window(handles[2])
driver.switch_to.window(handles[3])

driver.switch_to.window(handles[0])
driver.switch_to.window(handles[-1])
driver.switch_to.window(handles[-2])
driver.switch_to.window(handles[-3])
xinwen=driver.find_element(By.XPATH,'//*[@id="s-top-left"]/a[1]')
hao123=driver.find_element(By.XPATH,'//*[@id="s-top-left"]/a[2]')
ditu=driver.find_element(By.XPATH,'//*[@id="s-top-left"]/a[3]')
tieba=driver.find_element(By.XPATH,'//*[@id="s-top-left"]/a[4]')
shipin=driver.find_element(By.XPATH,'//*[@id="s-top-left"]/a[5]')
tupian=driver.find_element(By.XPATH,'//*[@id="s-top-left"]/a[6]')

lj=[xinwen,hao123,ditu,tieba,shipin,tupian]         #创造链接数组
for i in lj:
    i.click()
    sleep(1)
    print(driver.current_url)
handles=driver.window_handles

for xh in range(20):                                
    for a in handles:
        driver.switch_to.window(a)
        print(driver.title)
        print(driver.current_url)
        print(ctime())
        sleep(1)

11.警告框处理

alert
alert弹出一个提示框,点击确定即可关闭
driver.switch_to.alert.accept()        #确认

confirm
confirm弹出确认框,点击确定或者取消
driver.switch_to.alert.accept()             #确认


driver.switch_to.alert.dismiss()            #取消

prompt
 prompt弹出输入框,输入后,点击确定或者取消
driver.switch_to.alert.send_keys('这是一个验证测试,点击确定/取消')    #输入文本


driver.switch_to.alert.accept()             #确认


driver.switch_to.alert.dismiss()            #取消

driver.get('http://cdn1.python3.vip/files/selenium/test4.html')
    driver.maximize_window()
    sleep(4)
    # alert警告框处理
    driver.find_element(By.ID, 'b1').click()  # alert弹出一个提示框,点击确定即可关闭
    sleep(2)
    driver.switch_to.alert.accept()
    sleep(2)

    # confirm弹窗处理
    driver.find_element(By.ID, 'b2').click()  # confirm弹出确认框,点击确定或者取消
    sleep(2)
    driver.switch_to.alert.accept()  # 确认
    sleep(2)
    driver.find_element(By.ID, 'b2').click()  # confirm弹出确认框,点击确定或者取消
    sleep(2)
    driver.switch_to.alert.dismiss()  # 取消
    sleep(2)

    # prompt弹窗处理
    driver.find_element(By.ID, 'b3').click()  # prompt弹出输入框,输入后,点击确定或者取消
    sleep(2)
    driver.switch_to.alert.send_keys('这是一个验证测试,点击确定')
    sleep(3)
    driver.switch_to.alert.accept()  # 确认
    sleep(3)

    driver.find_element(By.ID, 'b3').click()  # prompt弹出输入框,输入后,点击确定或者取消
    sleep(2)
    driver.switch_to.alert.send_keys('这是一个验证测试,点击取消')
    sleep(3)
    driver.switch_to.alert.dismiss()  # 取消
    sleep(3)

12.上传文件

1.input

def z_upload_input():
    driver.get('http://www.sahitest.com/demo/php/fileUpload.htm')
    driver.find_element(By.ID,'file').send_keys('C:\zxs\pip-22.0.4.tar.gz')
    print(driver.find_element(By.ID,'file').get_attribute('value'))

2.非input

13.下载文件

14.操作cookie

1.打印全部cookie
print(driver.get_cookies())  

2.添加cookie
driver.add_cookie({'name':'aaa','value':'zzz'},{'name':'bbb','value':'xxx'},{'name':'ccc','value':'ccc'})    # 添加cookie

3.打印特定一条cookie
print(driver.get_cookie(name='aaa'))                # 打印特定一条cookie,name='zxs'

def z_cookies():
    print(driver.get_cookies())                         # 打印全部cookie
    driver.add_cookie({'name':'aaa','value':'zzz'},{'name':'bbb','value':'xxx'},{'name':'ccc','value':'ccc'})    # 添加cookie
    print(driver.get_cookie(name='zxs'))                # 打印特定一条cookie,name='zxs'
    print(driver.get_cookie(name='zxs'))                # 打印特定一条cookie,name='zxs'

15.调用JavaScript

只简单写一个打开窗口的js,如果想要更多的操作还需要去学习一些js的知识

def z_windowsopen():
    for i in range(10):
        driver.execute_script('window.open()')

16.处理HTML5的视频播放

17.窗口截图

driver.get_screenshot_as_file(r'path')会截取整个窗口,如果窗口不是最大会也不会截取窗口外的桌面的其他画面

截取整个窗口

    driver.get_screenshot_as_file(r'C:\zxs\screenshot\set_window_size.png')    # 截取整个窗口内容,窗口外的不截屏

通过元素截图

    # 通过元素截图方法
    driver.find_element(By.XPATH,'//*[@id="lg"]').screenshot(r'C:\zxs\screenshot\元素截图.png')

def z_screenshot():
    sleep(2)
    driver.maximize_window()
    sleep(1)
    driver.get_screenshot_as_file(r'C:\zxs\screenshot\maximize_window.png')    # 截取整个窗口内容
    driver.set_window_size(800,400)
    sleep(6)
    driver.get_screenshot_as_file(r'C:\zxs\screenshot\set_window_size.png')    # 截取整个窗口内容,窗口外的不截屏
    sleep(2)
    # 通过元素截图方法
    driver.find_element(By.XPATH,'//*[@id="lg"]').screenshot(r'C:\zxs\screenshot\元素截图.png')
    driver.quit()

18.关闭窗口

1.只关闭当前窗口
driver.close()

2.关闭浏览器全部窗口
 driver.quit()

19.验证码的处理

1.去掉验证码

2.设置万能验证码

 

3.记录cookie登录

20.webdriver的原理

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值