WebDriver API 详解-中

WebDriver API 详解

这里列了一些WebDriver API 的详细步骤,共3部分,初级,中级,高级供参考,也可以直接使用



一、初级API详解

二、中级API详解

1.操作单选下拉列表-遍历所有选项并打印选项文本和选项值

代码如下(示例):

#encoding=utf-8

from selenium import webdriver
import time

driver = webdriver.Chrome("D:\lupu_ui_autocation\driver\chromedriver.exe")
#被测试网页的HTML代码如下: 保存在d:\\select.html
'''
<html>
<body>
    <select name = 'fruit' size =1>
        <option id = 'peach' value = 'taozi'>桃子</option>
        <option id = 'watermelon' value = 'xigua'>西瓜</option>
        <option id = 'orange' value = 'juzi'>橘子</option>
        <option id = 'kiwifruit' value = 'mihoutao'>猕猴桃</option>
        <option id = 'maybush' value = 'shanzha'>山楂</option>
        <option id = 'litchi' value = 'lizhi'>荔枝</option>
    </select>
</body>
</html>
'''

#操作单选下拉列表

def test_print_select_text():
    global driver
    visit_uil = r"d:\\select.html"
    driver.get(visit_uil)
    select = driver.find_element_by_name('fruit') #通过name属性找到下拉列表元素
    all_options = select.find_elements_by_tag_name('option')  #获取所有标签名为option的元素,是个list
    for option in all_options:
        print('选项显示文本为:', option.text)  #获取文本
        print('选项值为:', option.get_attribute('value'))  #获取value属性
        option.click()
        time.sleep(2)
    driver.quit()
if __name__ == "__main__":
    test_print_select_text()

2.通过三种方法选择下拉列表

代码如下(示例):

#选择下拉列表元素的三种方法
#encoding=utf-8

from selenium.webdriver.support.ui import Select
from selenium import webdriver
import time

driver = webdriver.Chrome("D:\lupu_ui_autocation\driver\chromedriver.exe")

def test_operate_drop_list():
    global driver
    visit_uil = r"d:\\select.html"
    driver.get(visit_uil)
    #使用XPATH定位方式获取select页面元素对象
    select_element = Select(driver.find_element_by_xpath('//select'))
    #打印默认选中项的文本
    print(select_element.first_selected_option.text)
    #获取所有选择项的页面元素对象,是个list
    all_options = select_element.options
    print(len(all_options))   #打印选项的总数
    # is_enabled() 判断元素是否可操作  is_selected()判断元素是否被选中
    if all_options[1].is_enabled() and not all_options[1].is_selected():
        #方法一,通过序号选择元素,序号从0开始,select_by_index(1)选择第2个元素
        select_element.select_by_index(1)
        #select_element.all_selected_options[]获取所有被选中的对象组成的列表对象
        print(select_element.all_selected_options[0].text)
        assert select_element.all_selected_options[0].text =='西瓜', "断言西瓜失败"
    time.sleep(2)
    #方法二,通过选项的显示文本选择文本为‘猕猴桃’的选项
    select_element.select_by_visible_text('猕猴桃')
    assert select_element.all_selected_options[0].text =='猕猴桃','断言猕猴桃失败'

    time.sleep(2)
    #方法三,通过选项的value属性值选择value=‘shanzha’选项
    select_element.select_by_value('shanzha')
    print(select_element.all_selected_options[0].text)
    assert select_element.all_selected_options[0].text =='山楂','断言山楂失败'
    driver.quit()

if __name__ == "__main__":    
    test_operate_drop_list()

3.断言单选列表选项值

代码如下(示例):

#encoding=utf-8

from selenium.webdriver.support.ui import Select  #导入Select模块
from selenium import webdriver
import operator

driver = webdriver.Chrome("D:\lupu_ui_autocation\driver\chromedriver.exe")
#断言单选列表选项值

def test_check_select_text():
    global driver
    visit_uil = r"d:\\select.html"
    driver.get(visit_uil)
    #使用XPATH定位方式获取select页面元素对象
    select_element = Select(driver.find_element_by_xpath('//select'))
    #获取所有选择项的页面元素对象,是个list
    all_options = select_element.options
    #声明一个list对象,存储下拉列表中所期望出现的文字内容
    expect_options_list = ['桃子', '西瓜', '橘子', '猕猴桃', '山楂', '荔枝']
    #使用map()函数获取页面中下拉列表展示的选项内容组成的列表对象,转换成列表
    actual_options_list = list(map(lambda option: option.text, all_options))
    #断言期望列表与实际列表是否完全一致
    assert expect_options_list==actual_options_list,'断言相等失败'
    driver.quit()

if __name__ == "__main__":
    test_check_select_text()

4.操作多选的选择列表

代码如下(示例):

import time
from selenium import webdriver
from selenium.webdriver.support.ui import Select

driver = webdriver.Chrome("D:\lupu_ui_autocation\driver\chromedriver.exe")
#被测试网页的HTML代码如下: 保存在d:\\select001.html
'''
<html>
<body>
    <select name = 'fruit' size =6  multiple = true>        
        <option id = 'peach'  value = 'taozi'>桃子</option>
		<option id = 'watermelon'  value = 'xigua'>西瓜</option>
		<option id = 'orange'  value = 'juzi'>橘子</option>
		<option id = 'kiwifruit'  value = 'mihoutao'>猕猴桃</option>
		<option id = 'maybush'  value = 'shanzha'>山楂</option>
		<option id = 'litchi'  value = 'lizhi'>荔枝</option>       
    </select>
</body>
</html>
'''

#操作多选的选择列表

def test_multiple_option_list():
    global driver
    visit_uil = r"d:\\select001.html"
    driver.get(visit_uil)
    select_element = Select(driver.find_element_by_xpath('//select')) #通过定位找到下拉列表
    select_element.select_by_value('lizhi') #通过value选择选项
    select_element.select_by_visible_text('橘子') #通过文本选择选项
    select_element.select_by_index(1) #通过下标选择选项
    time.sleep(3)
    for option in select_element.all_selected_options: #打印被选中的文本
        print(option.text)
    select_element.deselect_all() #取消所有被选中的项
    time.sleep(3)
    select_element.select_by_value('xigua')  # 再次通过value选择选项
    select_element.select_by_visible_text('猕猴桃')  #再次 通过文本选择选项
    select_element.select_by_index(4)  # 再次通过下标选择选项
    time.sleep(3)
    select_element.deselect_by_visible_text('猕猴桃') #通过文本取消选项
    select_element.deselect_by_index(4)  #通过下标取消选项
    select_element.deselect_by_value('xigua') #通过value 取消选项
    driver.quit()
if __name__ == "__main__":
    test_multiple_option_list()

5.操作可输入的下拉列表(同时模拟按键)

代码如下(示例):

#encoding=utf-8

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

driver = webdriver.Chrome("D:\lupu_ui_autocation\driver\chromedriver.exe")
#被测试网页的HTML代码如下: 保存在d:\\select.html
'''
<html>
<body>
    <div style ='position:relative;'>
        <input list = 'pasta' id = 'select'>
        <datalist id = 'pasta'>
            <option >Bavette</option>
            <option >Rigatoni</option>
            <option >Fiorentine</option>
            <option >Gnocchi</option>
            <option >Penne</option>
            <option >Pcic</option>
            <option >Cancl</option>            
        </datalist>
    </div>
</body>
</html>
'''

#操作可输入的下拉列表(同时模拟按键<有些浏览器版本效果不能明显>)

def test_multiple_option_drop_list():
    global driver
    visit_uil = r"d:\\select.html"
    driver.get(visit_uil)
    driver.find_element_by_id('select').clear() #清空文本框
    driver.find_element_by_id('select').send_keys('c', Keys.ARROW_DOWN) #输入c,同时按下箭头键
    driver.find_element_by_id('select').send_keys(Keys.ARROW_DOWN)
    driver.find_element_by_id('select').send_keys(Keys.ENTER)  #按回车键
    time.sleep(3)
    driver.quit()
if __name__ == "__main__":
    test_multiple_option_drop_list()

6.通过设置剪贴板实现复制和粘贴

代码如下(示例):

#encoding=utf-8

import win32clipboard as wc
import win32con
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
import time
from selenium import webdriver

driver = webdriver.Chrome("D:\lupu_ui_autocation\driver\chromedriver.exe")
# 获取剪切板内容
def getCopy():
    wc.OpenClipboard()
    t = wc.GetClipboardData(win32con.CF_UNICODETEXT)
    wc.CloseClipboard()
    return t

# 写入剪切板内容
def setCopy(str):
    wc.OpenClipboard()
    wc.EmptyClipboard()
    wc.SetClipboardData(win32con.CF_UNICODETEXT, str)
    wc.CloseClipboard()

#通过设置剪贴板实现复制和粘贴
def test_copyAndPaste():
    global driver
    visit_uil = "http://www.baidu.com"
    driver.get(visit_uil)
    content = '我是测试组'
    setCopy(content)       #把内容设置到剪贴板中
    getCopy()              #获取剪贴板中的内容
    driver.find_element_by_id('kw').click()   #将焦点切换到搜索框
    '''
    模拟Ctrl+V 组合键,将剪贴板中获取的内容粘贴到搜索框中
    通过webdriver  内建的ActionChains 和Keys模块共同实现组合按键的操作
    '''
    ActionChains(driver).key_down(Keys.CONTROL).send_keys('V').key_up(Keys.CONTROL).perform()
    driver.find_element_by_id('su').click()    #单击搜索
    time.sleep(3)

if __name__ == "__main__":
    test_copyAndPaste()
    driver.quit()

7.对浏览器当前页面进行截图

代码如下(示例):
screenshot_file_path()关键字封装

#encoding=utf-8

from util.open_browser import *
from util.dir_path import *
from util.date_time import *



def get_screenshot_picture(driver):
    '''
    调用get_screenshot_as_file(filename)方法,对浏览器当前页面进行截图
    screenshot_file_path()详见[关键字封装][(https://blog.csdn.net/zhangguangyi520/article/details/114645446)]
    '''
    try:
        file_path = screenshot_file_path()
        pic_file_path = os.path.join(file_path, get_current_time())
        driver.get_screenshot_as_file(pic_file_path + '.png')
    except Exception as e:
        raise e


if __name__=='__main__':
    driver = OpenBrowser()
    driver.get('https://www.baidu.com')
    get_screenshot_picture(driver)

总结

未完

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值