6-selenium基础操作

1、webdriver常用方法

操作 示例
输入操作 元素.send_keys(‘输入内容’)  注:要求被操作按钮为文本框
清空文本框内容 元素.clear()
单击操作 元素.click()
获取元素尺寸 元素.size
获取元素文本内容 元素.text
获取元素属性值 元素.get_attribute (‘属性名’)
检查元素是否可见 元素.is_displayed()

2、控制浏览器操作


#控制浏览器大小(参数单位:像素)
browser.set_window_size(700,700)

#最大化窗口
browser.maximize_window()

#最小化窗口
browser.minimize_window()

#控制浏览器后退
browser.back() 

#控制浏览器前进
browser.forward() 

#控制浏览器刷新
browser.refresh() 

3、窗口截图

from selenium import webdriver
broswer = webdriver.Chrome()
broswer.get("https://www.baidu.com")

#截取整个页面
broswer.get_screenshot_as_file("./all.png")

#截取单个元素
baidu_text = broswer.find_element_by_id('kw')
baidu_text.screenshot('./baidu_text.png')

4、警告框处理

from selenium import webdriver
import time

browser = webdriver.Chrome()
browser.get('file:///D:/TestSoft/Selenium/test.html')

# 触发对话框
bu1 = browser.find_element_by_id('bu1').click()
# 操作对话框
al = browser.switch_to.alert
# 确定对话框
al.accept()

# 触发确认框
bu2 = browser.find_element_by_id('bu2').click()
# 操作确认框
al = browser.switch_to.alert
# 确认
# al.accept()
# 取消
al.dismiss()

# 触发提示框
bu3 = browser.find_element_by_id('bu3').click()
# 操作提示框
al = browser.switch_to.alert
# 获取警告框的文本信息
print(al.text)
# 提示框输入内容
al.send_keys('look at me')  # 输入内容会生效,但不会显示在界面
al.accept()

time.sleep(10)
browser.quit()

html附件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>警告框处理</title>
    <script type="text/javascript">
        function duihua() {
     
     
            alert("这个窗口是对话框!");
            print('你点击了确认');
        }

        function queren() {
     
     
            var se = confirm("确认框!");
            if (se == true) {
     
     
                print('你点击了确认1');
            } else {
     
     
                print('你点击了取消1');
            }
        }

        function tishi() {
     
     
            var se = prompt("请输入您的反馈意见", "测试")
            if (se != null) {
     
     
                print('你点击了确认2并输入了:' + se);
            } else {
     
     
                print('你点击了取消2');
            }
//            if (t != null && t != "") {
     
     
//                document.write("刷新回到初始界面")
//            }
        }

        function print(text) {
     
     
            var dom = document.createElement('div')
            dom.innerText = text
            document.getElementsByTagName('body')[0].appendChild(dom)
        }
    </script>
</head>
<body>
<input id="bu1" type="button" onclick="duihua()" value="点击显示对话框"/>
<br>
<br>
<input id="bu2" type="button" onclick="queren()" value="点击显示确认框"/>
<br>
<br>
<input id="bu3" type="button" onclick="tishi()" value="点击显示提示框"/>
</body>
<html>

5、鼠标事件

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

browser = webdriver.Chrome()
browser.get('https://www.baidu.com')

butn_more = browser.find_element_by_name('tj_briicon')

ActionChains(browser).move_to_element(butn_more).perform()  # 鼠标悬停
baidu_wp = browser.find_element_by_css_selector('a[name="tj_wangpan"]')
baidu_wp.click()  # 鼠标点击

ActionChains更多鼠标事件用法:

# ActionChains补充:拖动元素
browser = webdriver.Chrome()
browser.get('file:///D:/TestSoft/Selenium/test2.html')
ele1 = browser.find_element_by_id('blackSquare')
ele2 = browser.find_element_by_id('targetEle')
ActionChains(browser).drag_and_drop(ele1,ele2).perform()


# ActionChains补充:右击元素
ActionChains(browser).context_click(元素).perform()

# ActionChains补充:双击元素
ActionChains(browser).double_click(元素).perform()

# ActionChains补充:单击元素
ActionChains(browser).click(元素).perform()

html附件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        #targetEle {
     
     
            width: 300px;
            height: 300px;
            position: fixed;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
        }
    </style>
</head>
<body>
<div id="targetEle"
     style="position: absolute; width:100px; height:100px; background-color: greenyellow;cursor: pointer;"></div>
</body>
<div id="blackSquare"
     style="position: absolute; width:50px; height:50px; background-color: black;cursor: pointer;"></div>
<script>
    window.onload = () => {
     
     
        //获取拖拽实验对象
        let el = document.getElementById("blackSquare");
        //在该对象上绑定鼠标点击事件
        el.onmousedown = (e) => {
     
     
            //鼠标按下,计算鼠标触点距离元素左侧和顶部的距离
            let disX = e.clientX - el.offsetLeft;
            let disY = e.clientY - el.offsetTop;
            document.onmousemove = function (e) {
     
     
                //计算需要移动的距离
                let tX = e.clientX - disX;
                let tY = e.clientY - disY;
                //移动当前元素
                if (tX >= 0 && tX <= window.innerWidth - el.offsetWidth) {
     
     
                    el.style.left = tX + 'px';
                }
                if (tY >= 0 && tY <= window.innerHeight - el.offsetHeight) {
     
     
                    el.style.top = tY + 'px';
                }
            };
            //鼠标松开时,注销鼠标事件,停止元素拖拽。
            document.onmouseup = function (e) {
     
     
                document.onmousemove = null;
                document.onmouseup = null;
            };
        }
    }
</script>
</html>

6、键盘事件

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

browser = webdriver.Chrome()
browser.get('https://www.baidu.com')

text = browser.find_element_by_id('kw')
text.send_keys('look at me !!')

# 删除最有一个字符
text.send_keys(Keys.BACK_SPACE)

# 输入一个空格
text.send_keys(Keys.SPACE)

# 全选输入框内容
text.send_keys(Keys.CONTROL,"a")

# 剪切选中内容
text.send_keys(Keys.CONTROL,"x")

# 粘贴选中内容
text.send_keys(Keys.CONTROL,"v")

# 回车
text.send_keys(Keys.ENTER)

7、form切换

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('file:///D:/TestSoft/Selenium/test3.html')

# 1、首先找到要切换的iframe
iframe = browser.find_element_by_css_selector('iframe:nth-child(3)')

# 2、切换iframe
browser.switch_to.frame(iframe)

# 3、操作切换后的iframe
text = browser.find_element_by_id('kw')
text.send_keys('look at me')

# 补充:切换回主页面
# driver.switch_to.default_content()

html附件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<iframe src="https://taobao.com/"></iframe>
<br>
<iframe src="https://www.baidu.com/" width="500"></iframe>
</body>
</html>

8、页签切换

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

browser = webdriver.Chrome()
browser.get('https://www.baidu.com')

# 点击藏在更多的“百度网盘”
butn_more = browser.find_element_by_name('tj_briicon')
# 1、鼠标悬停在“更多”
ActionChains(browser).move_to_element(butn_more).perform()
# 2、点击百度网盘
baidu_wp = browser.find_element_by_css_selector('a[name="tj_wangpan"]')
baidu_wp.click()

print("切换前:",browser.current_url)

# 获取当前所有标签页
all_handles = browser.window_handles
for handle in all_handles:
    browser.switch_to.window(handle)
    if browser.title =='百度网盘,让美好永远陪伴':
        break
print("切换后:",browser.current_url)

9、操作滚动条

#将页面滚动条拖到底部
js="window.scrollTo(0,1000);"
browser.execute_script(js)

#将滚动条移动到页面的顶部
js="window.scrollTo(0,0);"
browser.execute_script(js)

# #将页面滚动条移动到页面任意位置,改变等于号后的数值即可
js="window.scrollTo(0,10);"
browser.execute_script(js)

10、下拉框选择

注:此种方法只针对 select 下拉框

from selenium import webdriver
from selenium.webdriver.support.select import Select

broswer = webdriver.Chrome()
broswer.get('file:///D:/TestSoft/Selenium/test.html')

# 1、定位元素
sele = broswer.find_element_by_id('abc')

# 2、根据文本内容选择
Select(sele).select_by_visible_text('月薪三十万')

# 根据索引选择
Select(sele).select_by_index(2)

# 根据value值选择
Select(sele).select_by_value('p1')

html附件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<select id="abc">
    <option value="p0">请选择你的月薪</option>
    <option value="p1">月薪三千</option>
    <option value="p2">月薪三万</option>
    <option value="p3">月薪三十万</option>
</select>
</body>
</html>

11、文件上传

input实现

对于input标签实现的上传,可看作输入框,通过send_keys上传文件

from selenium import webdriver
import win32com.client

broswer = webdriver.Chrome()
broswer.get('https://tinypng.com/')

loadFile = broswer.find_element_by_css_selector('input[type="file"]')
loadFile.send_keys('C:\\Users\86186\Desktop\\1.jpg')

非input实现

对于非input标签实现的上传,模拟键盘敲击方式实现上传文件

from selenium import webdriver
import win32com.client   #需要安装pywin32库
import time

broswer = webdriver.Chrome()
broswer.get('https://tinypng.com/')

# 定位文件上传按钮
broswer.find_element_by_css_selector('figure.icon').click()
time.sleep(2)

# 模拟键盘操作
sh = win32com.client.Dispatch("WScript.shell")
sh.Sendkeys('C:\\Users\86186\Desktop\\1.jpg\r\n\n')

猜你喜欢

转载自blog.csdn.net/weixin_45128456/article/details/113872027