selnium自动化测试之基本页面元素操作

基本页面元素操作

1. 获取浏览器及页面相关信息

2. 获取浏览器及页面相关信息

3. 浏览器页面相关信息获取

4. 页面滚动js操作

5. 文本输入

6. 鼠标事件键盘事件(删除粘贴复制)

7. 对下拉框的操作/列表遍历操作

8. 多窗口切换/页面

9. 警告框处理

# -*- coding: utf-8 -*-
"""
@Time        : 2021/5/26 14:15
@Auth        : 
@Email       : 
@File        : Lab5.py
@Description : selenium基本元素操作使用.fun1-fun9:获取浏览器及页面相关信息,浏览器页面相关信息获取,页面滚动js操作,文本输入,鼠标事件键盘事件(删除粘贴复制),对下拉框的操作/列表遍历操作,多窗口切换/页面,警告框处理
"""
#encoding=utf-8

from selenium import webdriver
import time
from selenium.webdriver.common.action_chains import ActionChains
# 引入 Keys 模块
from selenium.webdriver.common.keys import Keys



def fun1():
    '''
    获取浏览器及页面相关信息
    :return:
    '''
    driver=webdriver.Firefox()
    firstURL="http://www.sogou.com"
    driver.get(firstURL)
    #获取浏览器名称
    cu_name=driver.name
    #获取当前页面的 url 地址
    cu_url=driver.current_url
    #   获取当前页面标题
    cu_title=driver.title
    #获取当前页面源代码
    cu_html=driver.page_source
    #获取当前窗口句柄
    cu_handle=driver.current_window_handle
    print("浏览器是:{},URL 是:{},网页 title 是:{}".format(cu_name,cu_url,cu_title))
    print("网页内容是:\n")
    #print(cu_html)
    print("当前窗口句柄:{}".format(cu_handle))
    time.sleep(2)
    driver.quit()

def fun2():
    '''
    浏览器页面相关信息获取
    :return:
    '''
    driver = webdriver.Firefox()
    driver.implicitly_wait(1)
    first_url = "http://www.baidu.com/"
    driver.get(first_url)
    time.sleep(3)
    # 设置浏览器大小
    driver.set_window_size(800, 800)
    # 设置浏览器最大化
    time.sleep(3)
    driver.maximize_window()
    time.sleep(3)
    # 访问第二个页面
    second_url = 'http://news.baidu.com/'
    driver.get(second_url)
    time.sleep(3)
    # 返回(后退)到百度首页
    print("back to %s" % first_url)  # back to http://www.baidu.com/
    driver.back()
    time.sleep(3)
    # 前进到新闻页
    print("forward to %s" % second_url)  # forward to http://news.baidu.com/
    time.sleep(3)
    driver.forward()
    time.sleep(3)
    driver.refresh()
    time.sleep(3)
    driver.quit()

def fun3():
    '''
    页面滚动js操作
    :return:
    '''
    driver = webdriver.Firefox()
    driver.implicitly_wait(1)
    url = "http://news.baidu.com/"
    try:
        driver.get(url)
        driver.set_window_size(800, 600)
        time.sleep(3)
        # 将页面的滚动条水平滑动到指定位置
        js = 'window.scrollTo(600,0)'
        driver.execute_script(js)
        time.sleep(3)
        # 将页面的滚动条垂直滑动到指定位置
        js = 'window.scrollTo(0,800)'
        driver.execute_script(js)
        time.sleep(3)
        # 将页面的滚动条滑动到指定位置
        js = 'window.scrollTo(100,100)'
        driver.execute_script(js)
        time.sleep(3)
        # 将页面的滚动条垂直滑动到相对位置
        js = 'window.scrollBy(0,300)'
        driver.execute_script(js)
        time.sleep(3)
    except Exception as e:
        print(e)
        print("error")
    finally:
        driver.quit()

def fun4():
    '''
    文本输入
    :return:
    '''
    driver = webdriver.Firefox()
    driver.implicitly_wait(1)
    url = "https://www.baidu.com"
    driver.get(url)
    driver.find_element_by_id("kw").clear()
    time.sleep(3)
    driver.find_element_by_id("kw").send_keys("unittest")
    time.sleep(3)
    driver.find_element_by_id("su").click()
    time.sleep(5)
    driver.quit()

def fun5():
    '''
    鼠标事件
    :return:
    '''
    driver = webdriver.Firefox()
    driver.implicitly_wait(1)
    url = "https://www.baidu.com"
    driver.get(url)
    driver.maximize_window()
    time.sleep(2)
    element1 = driver.find_element_by_xpath(".//*[@id='su']")
    ActionChains(driver).move_to_element(element1).perform()
    time.sleep(5)
    # 右击 context_click()
    ActionChains(driver).context_click(element1).perform()
    time.sleep(5)
    # 双击 double_click()
    ActionChains(driver).double_click(element1).perform()
    time.sleep(5)
    # 拖动 drag_and_drop()
    # 定位元素的源位置
    element = driver.find_element_by_link_text("新闻")
    # 定位元素要移动到的目标位置
    target = driver.find_element_by_id("kw")
    # 执行元素的拖放操作
    ActionChains(driver).drag_and_drop(element, target).perform()
    time.sleep(3)
    driver.find_element_by_id("su").click()
    driver.quit()

def fun6():
    '''
    键盘事件(删除粘贴复制)
    :return:
    '''
    driver = webdriver.Firefox()
    driver.get("http://www.baidu.com")
    time.sleep(3)
    # 输入框输入内容
    driver.find_element_by_id("kw").send_keys("seleniumm")
    # 删除多输入的一个 m
    time.sleep(3)
    driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
    # 输入空格键+“教程”
    time.sleep(3)
    driver.find_element_by_id("kw").send_keys(Keys.SPACE)
    time.sleep(3)
    driver.find_element_by_id("kw").send_keys("教程")
    time.sleep(3)
    # ctrl+a 全选输入框内容
    driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'a')
    time.sleep(3)
    # ctrl+x 剪切输入框内容
    driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'x')
    time.sleep(3)
    # ctrl+v 粘贴内容到输入框
    driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'v')
    time.sleep(3)
    # 通过回车键盘来代替点击操作
    driver.find_element_by_id("su").send_keys(Keys.ENTER)
    time.sleep(3)
    driver.quit()

def fun7():
    '''
    对下拉框的操作/列表遍历操作
    :return:
    '''
    driver = webdriver.Firefox()
    driver.implicitly_wait(30)
    driver.maximize_window()
    driver.get("file://E://Lab//Selenium//untitled//resource//select.html")
    # 遍历所有选项
    select = driver.find_element_by_name("fruit")
    all_options = select.find_elements_by_tag_name("option")
    for option in all_options:
        print("选项文本:{}".format(option.text))
        print("选项值:{}".format(option.get_attribute("value")))
        option.click()
        time.sleep(3)
    driver.quit()

def fun8():
    '''
    多窗口切换/页面
    :return:
    '''
    driver = webdriver.Firefox()
    driver.implicitly_wait(10)
    driver.get("http://www.baidu.com")
    # 获得百度搜索窗口句柄
    search_windows = driver.current_window_handle
    driver.find_element_by_link_text('登录').click()
    time.sleep(2)
    driver.find_element_by_link_text("立即注册").click()
    time.sleep(2)
    # 获得当前所有打开的窗口句柄
    all_handles = driver.window_handles
    # 进入注册窗口
    for handle in all_handles:
        print(handle)
        if handle != search_windows:
            driver.switch_to.window(handle)
            print(driver.title)
            driver.find_element_by_name("userName").send_keys('username')
            driver.find_element_by_name('phone').send_keys('138XXXXXXXX')
            time.sleep(2)
            # 关闭当前窗口
            driver.close()
    # 回到搜索窗口
    driver.switch_to.window(search_windows)
    print(driver.title)
    driver.quit()

def fun9():
    '''
    警告框处理
    :return:
    '''
    driver = webdriver.Firefox()
    driver.get('http://www.baidu.com')
    # 打开搜索设置
    link = driver.find_element_by_xpath('//*[@id="s-usersetting-top"]').click()
    driver.find_element_by_link_text("搜索设置").click()
    time.sleep(2)
    # 保存设置
    driver.find_element_by_class_name("prefpanelgo").click()
    # 获取警告框
    alert = driver.switch_to.alert
    # 获取警告框提示信息
    alert_text = alert.text
    print(alert_text)
    time.sleep(3)
    # 接取警告框
    alert.accept()
    driver.quit()

if __name__=='__main__':
    fun7()



select.html

<html>

<head>
		<meta charset="utf-8">
		<title>测试网页</title>
</head>
<body>
 <select name="fruit" size=1>
 <option id='peach' value='taozi'>桃子</option>
 <option id='watermelon' value='xigua'>西瓜</option>
 <option id='orange' value='juzi' selected='selected'>橘子</option>
 <option id='peach' value='mihoutao'>猕猴桃</option>
 <option id='peach' value='shanza'>山楂</option>
 <option id='peach' value='lizi'>荔枝</option>
</select>
</body>
</html> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值