python 学习笔记(4)—— webdriver 自动化操作浏览器(基础操作)

这篇具有很好参考价值的文章主要介绍了python 学习笔记(4)—— webdriver 自动化操作浏览器(基础操作)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

安装 web driver:

        使用 driver 前,需要下载与浏览器版本相对应的 driver。如要在 Chrome 浏览器上操作,就要下载Chrome Driver。

几个常用浏览器的参考和下载地址:

Edge Driver:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

Chrome Driver:https://sites.google.com/chromium.org/driver/

        https://googlechromelabs.github.io/chrome-for-testing/

Firefox Driver:https://github.com/mozilla/geckodriver/releases

 

        这里使用Chrome浏览器,下载Chrome Driver。

        下载并安装完成后,将.exe文件拷贝到 python.exe 同级的目录下。

python 学习笔记(4)—— webdriver 自动化操作浏览器(基础操作),Python,python,自动化,笔记,chrome

        引入将要使用到的库

from selenium import webdriver

# By 里定义了许多常量,用来标识以何种形式来查找元素,如 By.CLASS_NAME 使用类名来查找
from selenium.webdriver.common.by import By

# 主要用来等待(确保页面加载、更新完成)
import time

 

        初始化驱动器:

driver = webdriver.Chrome()

# 如果没有将driver.exe放到环境变量或python.exe同级目录下,则要参数中指定
# driver = webdriver.Chrome('F:/chromedriver.exe')

 

        打开Chrome浏览器,访问指定的网站:

driver.get('http://www.cwl.gov.cn/fcpz/yxjs/ssq/')
time.sleep(3)            # 等待3秒再继续,确保页面加载完成

 

         然后将窗口最大化:

driver.maximize_window()

 

        观察页面和控制台,锁定目标(阳光开奖)的特征。

python 学习笔记(4)—— webdriver 自动化操作浏览器(基础操作),Python,python,自动化,笔记,chrome

 

        找到并点击 阳光开奖 链接,继续等待3秒,确保页面加载更新完成:

# find_element 返回的是第一个匹配的元素
# By.XPATH 使用类似 xPath 的语法来定位页面的元素, 第二个参数是对应的 xPath 内容
driver.find_element(by=By.XPATH, value="//div[@data-alias='ygkj']").click()
time.sleep(3)

 

        此时浏览器会打开一个新的标签页,我们需要将 driver 定位到新的标签页中

# 获取当前打开的几个窗口,返回的是一个列表,每个元素是每个标签页的标识
windows = driver.window_handles

# 切换到最新打开的窗口,保证后面能正常获取页面中的元素
driver.switch_to.window(windows[-1])

 

        结合控制台和页面,找到 往期开奖公告 的特征标识,找到该元素并点击:

python 学习笔记(4)—— webdriver 自动化操作浏览器(基础操作),Python,python,自动化,笔记,chrome

# 点击往期开奖公告
# By.PARTIAL_LINK_TEXT  使用链接的文本内容来进行搜索,后面的值是目标元素的innerText
driver.find_element(by=By.PARTIAL_LINK_TEXT, value="往期开奖公告").click()
time.sleep(3)

 

         然后尝试在界面执行一个脚本,滚动到页面底部

python 学习笔记(4)—— webdriver 自动化操作浏览器(基础操作),Python,python,自动化,笔记,chrome

# 滚动到最底部(不是必须)    
# By.CLASS_NAME 使用类名来查找底部的图片 第二个参数是对应的类名
target = driver.find_element(by=By.CLASS_NAME, value='footer-logo')

# 对于指定的元素执行脚本   这里的arguments[0]是第二个参数target
driver.execute_script('arguments[0].scrollIntoView({behavior:"smooth"})', target)
time.sleep(2)

 

        然后找到下一页的按钮,并点击进入下一页:

python 学习笔记(4)—— webdriver 自动化操作浏览器(基础操作),Python,python,自动化,笔记,chrome

# 下一页   
# By.ID     指定使用 id 属性来查找元素,第二个参数是id值
# 这里先试用id来找到祖父节点,顺着该节点再继续往下找
paging = driver.find_element(by=By.ID, value='paging')
paging.find_element(by=By.CLASS_NAME, value='layui-laypage-next').click()
time.sleep(2)

 

        在当前界面的右上角,有搜索功能,尝试自动输入指定内容并搜索

python 学习笔记(4)—— webdriver 自动化操作浏览器(基础操作),Python,python,自动化,笔记,chrome

 

python 学习笔记(4)—— webdriver 自动化操作浏览器(基础操作),Python,python,自动化,笔记,chrome

# 在右上角的输入框中输入内容    使用ID来表示元素
# send_keys    在输入框中键入指定的内容,即输入 2023-5
driver.find_element(By.ID, 'searchInput').send_keys('2023-5')
time.sleep(2)

# 点击搜索按钮        先找父级,在从父级找子元素
btnParent = driver.find_element(By.CLASS_NAME, 'input-group-btn')
btnParent.find_element(By.CLASS_NAME, 'btn-default').click()
time.sleep(2)

 

        点击搜索后,会新创建一个标签页,此时需要更新 driver 到新的标签页面。

# 及时切换窗口
windows = driver.window_handles
driver.switch_to.window(windows[-1])

 

        点击第一个结果:

python 学习笔记(4)—— webdriver 自动化操作浏览器(基础操作),Python,python,自动化,笔记,chrome

# 点击第一个结果
items = driver.find_elements(By.CLASS_NAME, 'con-item')
items[0].find_element(By.CLASS_NAME, 'black').click()

 

        点击后,同样会新开一个标签页,此时我们把当前这个搜索结果的标签页关闭,然后跳转到新的标签页中:

# 关闭当前标签页并切换到新的窗口
driver.close()
windows = driver.window_handles
driver.switch_to.window(windows[-1])
time.sleep(2)

 

        如果要返回历史开奖结果页面:

# 返回开奖历史记录
driver.switch_to.window(windows[-2])

 

        如果想给开奖结果截一个图(元素截图):

# 指定元素截图(只截图当前浏览器窗口可见部分)
main = driver.find_element(By.CLASS_NAME, 'main')
main.screenshot('./caipiao_1.png')    # 命名并保存

 

        然后可以在当前的目录下查看 caipiao.png 图片:

python 学习笔记(4)—— webdriver 自动化操作浏览器(基础操作),Python,python,自动化,笔记,chrome

完整程序代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
import time


# 初始化驱动器
driver = webdriver.Chrome()
# 如果没有将driver.exe放到环境变量或python.exe同级目录下,则要参数中指定
# driver = webdriver.Chrome('F:/chromedriver.exe')

# 访问指定网站
driver.get('http://www.cwl.gov.cn/fcpz/yxjs/ssq/')
driver.maximize_window()            # 最大化窗口
time.sleep(3)

# 点击阳光开奖  使用Xpath来搜索
driver.find_element(by=By.XPATH, value="//div[@data-alias='ygkj']").click()
time.sleep(3)

# 获取当前打开了几个窗口
windows = driver.window_handles
# 会打开新的标签页,因此需要切换到最新打开的窗口,保证后面能正常获取元素
driver.switch_to.window(windows[-1])

# 点击往期开奖公告    使用链接的文本内容来进行搜索
driver.find_element(by=By.PARTIAL_LINK_TEXT, value="往期开奖公告").click()
time.sleep(3)

# 滚动到最底部
target = driver.find_element(by=By.CLASS_NAME, value='footer-logo')
# 对于指定的元素执行脚本   这里的arguments[0]是第二个参数target
driver.execute_script('arguments[0].scrollIntoView({behavior:"smooth"})', target)
time.sleep(2)

# 下一页   先试用id来找到祖父节点,顺着该节点再继续往下找
paging = driver.find_element(by=By.ID, value='paging')
paging.find_element(by=By.CLASS_NAME, value='layui-laypage-next').click()
time.sleep(2)

# 在右上角的输入框中输入内容
driver.find_element(By.ID, 'searchInput').send_keys('2023-5')
time.sleep(2)

# 点击搜索按钮
btnParent = driver.find_element(By.CLASS_NAME, 'input-group-btn')
btnParent.find_element(By.CLASS_NAME, 'btn-default').click()
time.sleep(2)

# 及时切换窗口
windows = driver.window_handles
driver.switch_to.window(windows[-1])

# 点击第一个结果
items = driver.find_elements(By.CLASS_NAME, 'con-item')
items[0].find_element(By.CLASS_NAME, 'black').click()

# 关闭当前标签页并切换到新的窗口
driver.close()
windows = driver.window_handles
driver.switch_to.window(windows[-1])
time.sleep(2)

# 返回开奖历史记录
driver.switch_to.window(windows[-2])

# 指定元素截图(只截图当前浏览器窗口可见部分)
main = driver.find_element(By.CLASS_NAME, 'main')
main.screenshot('./caipiao_1.png')

input('')               # 保持程序运行状态,浏览器不会被关闭

        获取前三页的彩票中奖号码,并写入到 Excel 中:

'''
    需要安装 xlwings 来操作 Excel
    pip install xlwings
'''

from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
import xlwings as xw

driver = webdriver.Chrome()
driver.get('http://www.cwl.gov.cn/ygkj/kjgg/')
sleep(2)

driver.find_element(By.CLASS_NAME, 'ygkj_wqkjgg_nav').click()
sleep(2)

# 保存结果
days = []
qiu_list = []

def get_data(total_pages, current_page, file_name = 'data'):
    tbody = driver.find_element(By.TAG_NAME, 'tbody')
    trs = tbody.find_elements(By.TAG_NAME, 'tr')

    for tr in trs:
        tds = tr.find_elements(By.TAG_NAME, 'td')
        days.append(tds[1].text)
        qiu_items = tr.find_elements(By.CLASS_NAME, 'qiu-item')
        nums = []
        for item in qiu_items:
            nums.append(item.text)
        qiu_list.append(nums)

    # 递归调用
    if current_page < total_pages:
        # 下一页
        driver.find_element(By.CLASS_NAME, 'layui-laypage-next').click()
        get_data(total_pages, current_page + 1)
    else:
        driver.quit()       # 停止驱动器,关闭网页

        # 创建一个不显示、不添加新的工作簿的 Excel 应用程序对象
        app = xw.App(visible=False, add_book=False)
        # 创建了一个新的工作簿对象,并将其赋值给 wb 变量。
        wb = app.books.add()
        # 获取第一张表格
        sheet_1 = wb.sheets['sheet1']
        sheet_1["A1"].value = "时间"              # 设置A1单元格的内容
        for i in range(1, 7):                       # 设置 B1 ~ H1的内容
            sheet_1[f"{chr(ord('A') + i)}1"].value = f"红{i}"
        sheet_1[f"{chr(ord('A') + 7)}1"].value = "蓝"
        for i in range(len(days)):                  # 填写内容
            sheet_1[f"A{2 + i}"].value = days[i]
            sheet_1[f"B{2 + i}:{chr(ord('B') + 7)}{2 + i}"].value = qiu_list[i]

        wb.save(f"./{file_name}.xlsx")              # 保存xlsx
        wb.close()                                  # 关闭该工作簿对象
        app.quit()                                  # 关闭应用程序
        print('successful.')

if __name__ == '__main__':
    get_data(total_pages=3, current_page=1)

python 学习笔记(4)—— webdriver 自动化操作浏览器(基础操作),Python,python,自动化,笔记,chrome

 参考:

[1] Selenium Python 教程 - 知乎

[2] Python操作Excel的Xlwings教程(一) - 知乎

[3] xlwings,让excel飞起来!

[4] Python 自动化操作 Excel 看这一篇就够了 - 知乎

[5] 定位策略 | Selenium文章来源地址https://www.toymoban.com/news/detail-697686.html

到了这里,关于python 学习笔记(4)—— webdriver 自动化操作浏览器(基础操作)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python+Selenium.webdriver实现WEB端UI自动化测试(实例脚本)

            本篇记录基于Python+Selenium.webdriver实现WEB端UI自动化测试,其中测试用例使用excel维护。为了在实际项目种的扩展应用,建议学习webdriver的元素定位方法,欢迎在评论区沟通讨论。 该示例选取的是登录页不需要输入验证码校验的基础页面(考虑到现在大部分项目都是

    2023年04月08日
    浏览(27)
  • web自动化框架:selenium学习使用操作大全(Python版)

    Selenium需要浏览器驱动程序才能与所选浏览器交互。例如,Firefox需要安装geckodriver。确保它在PATH中。 主流浏览器驱动下载地址如下: 浏览器 驱动名称 打开方式及注意事项 地址 Chrome chromedriver driver = webdriver.Chrome() 下载浏览器对应版本的chromedriver.exe 一定要创建对象,不然打

    2024年02月11日
    浏览(31)
  • 从零开始学习Python控制开源Selenium库自动化浏览器操作,实现爬虫,自动化测试等功能(一)

    介绍Selenium : Selenium是一个用于自动化浏览器操作的开源工具和库。它最初是为Web应用测试而创建的,但随着时间的推移,它被广泛用于Web数据抓取和网页自动化操作。Selenium 支持多种编程语言,包括Python,Java,C#等。 这里我们主要实现采用Python的方式 Selenium 的主要特点和

    2024年01月22日
    浏览(53)
  • 【码尚教育】Python自动化测试框架pytest—入门学习笔记

    目录 前言 一、pytest单元测试框架 二、 单元测试框架和自动化测试框架有什么关系 三、pytest简介 四、使用pytest默认的测试用例规则及基础应用 五、pytest测试用例的运行方式 六、pytest执行测试用例的顺序 七、如何分组执行​编辑 八、pytest跳过用例 九、pytest框架实现的一些

    2023年04月12日
    浏览(37)
  • 【UI自动化测试技术】自动化测试研究:Python+Selenium+Pytest+Allure,详解UI自动化测试,学习模拟鼠标+模拟键盘进行相关操作(精)(四)

    1、了解元素交互的常用方法 2、学习如何对多选元素进行操作 3、 学习模拟鼠标进行相关操作 ( 本节目标 ) 4、 学习模拟键盘进行相关操作 ( 本节目标 ) 用于向 Web 浏览器提供虚拟化设备输入操作的低级接口.除了刚刚讲过的Web元素交互之外, Actions 接口 还提供了对指定输

    2024年03月24日
    浏览(44)
  • PSCAD学习笔记(2)——python调用PSCAD自动化库代码解析:组件控制

    该学习笔记结合官方文件和个人学习见解撰写,主要分享一些常见实用功能,欢迎讨论、补充、指正。PSCAD相关免费学习资源实属稀缺,如果本文对您有所帮助,麻烦点赞评论支持一下。您的支持是我更新的动力。 PSCAD版本:4.6.3 python版本:3.7 mhrc-automation版本:1.2.4 python编辑

    2024年02月22日
    浏览(54)
  • 【软件测试/自动化测试】WebDriver+Selenium实现浏览器自动化

    前言 使用场景 原理 环境准备  开发 First Script WebDriver API 浏览器 元素 总结 Selenium是一款可以自动化操作浏览器的开源项目,最初的目的是浏览器功能的自动化测试,但是随着项目的发展,人们根据它的特性也用来做一些更多的有意思的功能而不仅仅是UI的自动化测试工具。

    2024年02月08日
    浏览(58)
  • 【自动化测试】如何下载安装webdriver

    写自动化脚本的时候经常会用到selenium,selenium来自webdriver模块,所以需要安装对应的webdriver驱动。 1.查看自己浏览器的版本; 发现我的浏览器版本已经升到了最新的版本,我参照这个链接,下载了最新版本的驱动, https://googlechromelabs.github.io/chrome-for-testing/#stable,如果浏览器

    2024年02月07日
    浏览(23)
  • 自动化测试框架selenium之webdriver

    对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象,一个对象有很多的属性,我们可以通过这些属性找到对象。 注意:不管用那种方式,必须保证页面上该属性的唯一性 webdriver 提供了一系列的对象定位方法,常用的有以下几种 id name class nam

    2024年02月12日
    浏览(35)
  • UI自动化测试篇 :Selenium2(Webdriver)&TestNG自动化测试环境搭建

     🔥 交流讨论: 欢迎加入我们一起学习! 🔥 资源分享 : 耗时200+小时精选的「软件测试」资料包 🔥  教程推荐: 火遍全网的《软件测试》教程   📢 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!    最开始学习UI自动化,用的工具是QTP10,用起来确实比较容易上手

    2024年03月10日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包