web自动化之基础内容四(全网最详细,窗口截图,警告框处理,鼠标和键盘事件,iframe切换,多标签页,滚动页面)-第四天

1.窗口截图

用处:在断言后,发现实际结果与预期结果不一致,可用窗口截图

webdriver 提供了 get_screenshot_as_file 函数来获取当前窗口

代码示例

"""
webdriver 提供了 get_screenshot_as_file 函数来获取当前窗口
"""
from selenium import webdriver
# 创建浏览器驱动对象,这里是打开浏览器
driver = webdriver.Chrome("E:\愤怒吧小鸟\chromedriver-win64\chromedriver.exe")
# 访问网址
driver.get("http://www.baidu.com")
# 截取整个页面
driver.get_screenshot_as_file("./all.png") #保存在当前路径下,并取名为all.png
# 截取单个元素
ele = driver.find_element_by_id("kw")
ele.screenshot("./ele.png") #保存在当前路径下,并取名为ele.png
#关闭浏览器
driver.quit()

运行结果:

项目会新增两张图片

两张图片的样子:

ele.png

all.png

 

2.警告框处理

自己写一个test1.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>

运行结果

js方法写的对话框,是无法定位的(即右键的时候,是没有“检查”选项的)

selenium当中处理JavaScript生成的alert弹框,警告,提示框,对话框等

switch_to.alert

代码示例(确认对话框):



from selenium import webdriver
# 创建浏览器驱动对象,这里是打开浏览器
driver = webdriver.Chrome("E:\愤怒吧小鸟\chromedriver-win64\chromedriver.exe")
# 访问网址
driver.get("file:///D:/sonQin/pythonProjectSelenimu/day04/test1.html")
# 触发对话框
driver.find_element_by_id("bu1").click()
# 操作对话框,先获取对象,赋值给变量
al = driver.switch_to.alert  # 注意 switch_to 后面是一个点
# 确定对话框
al.accept()

运行结果:

确认框的代码

提示框代码:

 3.鼠标事件

# 鼠标悬停到 ele 元素
ActionChains(driver).move_to_element(ele).perform()
# 右击 ele 元素
ActionChains(driver).context_click(ele).perform()
# 双击
ele元素
ActionChains(driver).double_click(ele).perform()
# 单击 ele 元素
ActionChains(driver).click(ele).perform()
# 拖动元素, 将ele1元素 拖到 ele2元素
ActionChains(driver).drag_and_drop(ele1, ele2).perform()

(简单:可以用test2.html界面实操,把黑色的框拖到绿色的框)

test2.html可在资源中自行下载,如有疑问,可在评论区留言

举例:访问百度界面(本人的百度是已登录的)

点击藏在更多里边的 翻译 按钮(要用到鼠标事件

代码示例

from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
# 创建浏览器驱动对象,这里是打开浏览器
driver = webdriver.Chrome("E:\愤怒吧小鸟\chromedriver-win64\chromedriver.exe")
# 访问网址
driver.get("http://www.baidu.com")
# 鼠标悬停到更多
# 想要对某个元素进行鼠标操作,首先要定位到这个元素
ele = driver.find_element_by_name("tj_briicon")

# 对定位到的元素执行鼠标悬停的操作(move_to_element()是鼠标悬停的操作)
ActionChains(driver).move_to_element(ele).perform()
# 鼠标事件有个特殊之处,我们所调用的函数只是注册动作,不会执行
# 如果想要执行,需要在之后加上 perform 函数

# 点击藏在更多里边的 翻译 按钮
ele = driver.find_element_by_css_selector('#s-top-more a[name="tj_fanyi"]')
ele.click()

4.键盘事件

代码示例

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

# 创建浏览器驱动对象,这里是打开浏览器
driver = webdriver.Chrome("E:\愤怒吧小鸟\chromedriver-win64\chromedriver.exe")
# 访问网址
driver.get("https://www.baidu.com")

# 定位到百度上的文本输入框
ele = driver.find_element_by_id("kw")
time.sleep(3)  #下面加time.sleep(3)是为了观察效果

# 输入内容
ele.send_keys("seleniumn")
time.sleep(3)

# 删除最后一个多余的 n
ele.send_keys(Keys.BACK_SPACE)
time.sleep(3)

# 输入一个空格,然后再输入教程
# ele.send_keys(" 教程") #这行代码与下面两行代码的效果一样
ele.send_keys(Keys.SPACE)
ele.send_keys("教程")

# 全选输入框的内容
ele.send_keys(Keys.CONTROL, "a")
time.sleep(3)

# 剪切选中的内容
ele.send_keys(Keys.CONTROL, "x")
time.sleep(3)

# 黏贴剪切板里边的内容
ele.send_keys(Keys.CONTROL, "v")
time.sleep(3)

 5.iframe切换

代码示例

import time

from selenium import webdriver

# 创建浏览器驱动对象,这里是打开浏览器
driver = webdriver.Chrome("E:\愤怒吧小鸟\chromedriver-win64\chromedriver.exe")
# 访问网址
driver.get("file:///D:/sonQin/pythonProjectSelenimu/day04/test3.html")
# 想要切换 iframe,首先定位到它
#如果iframe多层,那么就一层一层的找
ifa = driver.find_element_by_css_selector("iframe:nth-child(3)")
# 找到之后,就可以去切换了
driver.switch_to.frame(ifa)
# 切回到主页面
# driver.switch_to.default_content()

# time.sleep(3)
driver.find_element_by_class_name('ant-input-lg').send_keys("林黛玉")

ifa = driver.find_element_by_css_selector("iframe:nth-child(3)") 代码为啥是3

见如下图

6.多标签页

代码示例

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

# 创建浏览器驱动对象,这里是打开浏览器
driver = webdriver.Chrome("E:\愤怒吧小鸟\chromedriver-win64\chromedriver.exe")
# 访问网址
driver.get("https://www.baidu.com")

# 鼠标悬停到更多
# 想要对某个元素进行鼠标操作,首先要定位到这个元素
ele = driver.find_element_by_name("tj_briicon")

# 对定位到的元素执行鼠标悬停的操作(move_to_element()是鼠标悬停的操作)
ActionChains(driver).move_to_element(ele).perform()
# 鼠标事件有个特殊之处,我们所调用的函数只是注册动作,不会执行
# 如果想要执行,需要在之后加上 perform 函数

# 点击藏在更多里边的 翻译 按钮
ele = driver.find_element_by_css_selector('#s-top-more a[name="tj_fanyi"]')
ele.click()

# 获取当前所有的标签页的句柄   # 句柄,就是操作系统中的 唯一资源标识符
all_handles = driver.window_handles

for handle in all_handles:
    driver.switch_to.window(handle)  #切换标签页
    if driver.title == "百度翻译-200种语言互译、沟通全世界!":   #检验切换的标签页是【百度翻译】
        break

# 在新打开的百度翻译的标签,文档翻译输入框,输入一些内容
driver.find_element_by_id("baidu_translate_input").send_keys("hello")

7.滚动页面

代码示例

"""
window.scrollBy()
window.scrollBy(0,500)     向下滚动500个像素

window.scrollBy(0,-500)   向上滚动500个像素

window.scrollBy(500,0)     向右滚动500个像素

window.scrollBy(-500,0)   向左滚动500个像素

"""
from selenium import webdriver
# 创建浏览器驱动对象,这里是打开浏览器
driver = webdriver.Chrome("E:\愤怒吧小鸟\chromedriver-win64\chromedriver.exe")
# 访问网址
driver.get("https://www.51job.com")

# 滚动条使用 JavaScript控制的, execute_script 函数可以帮我们执行js
driver.execute_script("window.scrollBy(0,500)")

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿里嘎多f

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值