Selenium系列(十七) - Web UI 自动化基础实战(4)

简介: Selenium系列(十七) - Web UI 自动化基础实战(4)

如果你还想从头学起Selenium,可以看看这个系列的文章哦!

https://www.cnblogs.com/poloyy/category/1680176.html

 

其次,如果你不懂前端基础知识,需要自己去补充哦,博主暂时没有总结(虽然我也会,所以我学selenium就不用复习前端了哈哈哈...)

 

注意,目前的实战都是流水账式写的,后面才会结合框架+PO模式

目的是为了掌握所学的Selenium基础

 

实战题目


  1. 登录 http://www.51job.com
  2. 点击高级搜索
  3. 输入搜索关键词 python
  4. 地区选择 杭州
  5. 职能类别 选 计算机软件 -> 高级软件工程师
  6. 公司性质 选 上市公司
  7. 工作年限 选 1-3 年
  8. 搜索最新发布的职位, 抓取页面信息。 得到如下的格式化信息

Python开发工程师 | 杭州纳帕科技有限公司 | 杭州 | 0.8-1.6万/月 | 04-27

Python高级开发工程师 | 中浙信科技咨询有限公司 | 杭州 | 1-1.5万/月 | 04-27


image.png


代码思路(人为测试时的操作步骤)


  1. 点击【高级搜索】
  2. 关键字输入python
  3. 点击城市
  4. 显式等待,定位所有默认已选中的城市
  5. 取消选中它们
  6. 点击【北京】
  7. 点击【确定】
  8. 发现关键字输入框下方出现关键字历史记录,需要点击任意地方才能取消显示,所以随便找一个可点击元素进行点击
  9. 点击【职能类别输入框】
  10. 显式等待,点击【后端开发】
  11. 点击【高级软件工程师】
  12. 点击【确定】
  13. 点击【工作年限】,选择1-3年
  14. 点击【公司性质】,选择上市公式
  15. 点击【搜索】
  16. 定位职位列表,除了第一行
  17. 循环职位列表,获取每一行的信息存入列表
  18. 格式化输出

 

代码


# !/usr/bin/env python
# -*- coding: utf-8 -*-
"""
__title__  =
__Time__   = 2020/3/25 17:52
__Author__ = 小菠萝测试笔记
__Blog__   = https://www.cnblogs.com/poloyy/
"""
from time import sleep
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as ec
# 加载驱动
driver = webdriver.Chrome("../resources/chromedriver.exe")
def wait_element(driver, by_, element_, timeout=10):
    element = WebDriverWait(driver, timeout=timeout).until(
        ec.presence_of_element_located(
            (by_, element_)
        )
    )
    return element
def wait_elements(driver, by_, element_, timeout=10):
    element = WebDriverWait(driver, timeout=timeout).until(
        ec.presence_of_all_elements_located(
            (by_, element_)
        )
    )
    return element
# 加载驱动
driver = webdriver.Chrome("../resources/chromedriver.exe")
# 打开网站
driver.get("http://www.51job.com")
driver.maximize_window()
# 高级搜索
more_btn = wait_element(driver, By.CLASS_NAME, "more").click()
# 职位框
wait_element(driver, By.ID, "kwdselectid").send_keys("python")
# 城市按钮
driver.find_element_by_id("work_position_click").click()
# layer
layer = wait_element(driver, By.ID, "work_position_layer")
# 城市列表
city_list = wait_elements(driver, By.CSS_SELECTOR, "div#work_position_click_center_right_list_000000 table em.on")
for city in city_list:
    sleep(1)
    city.click()
# 杭州
wait_element(driver, By.ID, "work_position_click_center_right_list_category_000000_080200").click()
# 确认
wait_element(driver, By.ID, "work_position_click_bottom_save").click()
# form
wait_element(driver, By.CSS_SELECTOR, "div#historylist>div.r1").click()
# 职能类别
wait_element(driver, By.ID, "funtype_click").click()
# 职能弹窗
type_layer = wait_element(driver, By.ID, "funtype_layer")
# 后端开发
wait_element(driver, By.ID, "funtype_click_center_right_list_category_0100_0100").click()
# f如果有已选列表,取消选择
flag = wait_element(driver, By.ID, "funtype_click_multiple_selected")
if flag.text:
    # 已选列表
    type_list = wait_elements(driver, By.CSS_SELECTOR, "div#funtype_click_multiple_selected>span")
    for types in type_list:
        if types.text == "高级软件工程师":
            continue
        em = types.find_element_by_tag_name("em")
        em.click()
# 高级软件工程师
wait_element(driver, By.ID, "funtype_click_center_right_list_sub_category_each_0100_0106").click()
# 确定
driver.find_element_by_id("funtype_click_bottom_save").click()
# 公司性质
company = wait_element(driver, By.ID, "cottype_list")
company.click()
# 列表
ctype_list = company.find_elements_by_css_selector("div.ul > span")
for ctype in ctype_list:
    # 外资(欧美)没有数据
    if ctype.text == "上市公司":
        ctype.click()
        break
# 工作年限
workyear_list = wait_element(driver, By.ID, "workyear_list")
workyear_list.click()
# 列表
wlist = workyear_list.find_elements_by_css_selector("div.ul > span")
for wtype in wlist:
    if wtype.text == "1-3年":
        wtype.click()
        break
# 搜索按钮
wait_element(driver, By.CSS_SELECTOR, "div.btnbox > span.p_but").click()
# 职位列表
resultList = wait_elements(driver, By.CSS_SELECTOR, "div#resultList>div.el")[1:]
for res in resultList:
    spans = res.find_elements_by_tag_name("span")
    texts = [x.text for x in spans]
    # 最终输出
    print(" | ".join(texts))
sleep(10)
driver.quit()


相关文章
|
4月前
|
存储 关系型数据库 测试技术
玩转n8n测试自动化:核心节点详解与测试实战指南
n8n中节点是自动化测试的核心,涵盖触发器、数据操作、逻辑控制和工具节点。通过组合节点,测试工程师可构建高效、智能的测试流程,提升测试自动化能力。
|
4月前
|
Web App开发 前端开发 JavaScript
Playwright极速UI自动化实战指南
Playwright告别Selenium痛点,以智能等待、强大选择器、网络拦截与多设备模拟四大利器,提升自动化效率与稳定性。本文通过实战代码详解其加速秘籍,助你构建高效、可靠的UI测试方案。
|
4月前
|
存储 前端开发 Java
【JAVA】Java 项目实战之 Java Web 在线商城项目开发实战指南
本文介绍基于Java Web的在线商城技术方案与实现,涵盖三层架构设计、MySQL数据库建模及核心功能开发。通过Spring MVC + MyBatis + Thymeleaf实现商品展示、购物车等模块,提供完整代码示例,助力掌握Java Web项目实战技能。(238字)
506 0
|
5月前
|
Web App开发 人工智能 JavaScript
主流自动化测试框架的技术解析与实战指南
本内容深入解析主流测试框架Playwright、Selenium与Cypress的核心架构与适用场景,对比其在SPA测试、CI/CD、跨浏览器兼容性等方面的表现。同时探讨Playwright在AI增强测试、录制回放、企业部署等领域的实战优势,以及Selenium在老旧系统和IE兼容性中的坚守场景。结合六大典型场景,提供技术选型决策指南,并展望AI赋能下的未来测试体系。
|
3月前
|
数据采集 运维 监控
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
本文系统解析爬虫与自动化核心技术,涵盖HTTP请求、数据解析、分布式架构及反爬策略,结合Scrapy、Selenium等框架实战,助力构建高效、稳定、合规的数据采集系统。
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
|
3月前
|
弹性计算 人工智能 前端开发
在阿里云ECS上部署n8n自动化工作流:U2实例实战
本文介绍如何在阿里云ECS的u2i/u2a实例上部署开源工作流自动化平台n8n,利用Docker快速搭建并配置定时任务,实现如每日抓取MuleRun新AI Agent并推送通知等自动化流程。内容涵盖环境准备、安全组设置、实战案例与优化建议,助力高效构建低维护成本的自动化系统。
950 5
|
4月前
|
存储 JavaScript 安全
Web渗透-XSS漏洞深入及xss-labs靶场实战
XSS(跨站脚本攻击)是常见的Web安全漏洞,通过在网页中注入恶意脚本,窃取用户信息或执行非法操作。本文介绍其原理、分类(反射型、存储型、DOM型)、测试方法及xss-labs靶场实战案例,帮助理解与防御XSS攻击。
1602 1
Web渗透-XSS漏洞深入及xss-labs靶场实战
|
5月前
|
人工智能 缓存 测试技术
Playwright进阶指南 (6) | 自动化测试实战
2025企业级测试解决方案全面解析:从单元测试到千级并发,构建高可用测试体系。结合Playwright智能工具,解决传统测试维护成本高、环境依赖强、执行效率低等痛点,提升测试成功率,内容从测试架构设计、电商系统实战框架、高级测试策略、Docker化部署、CI/CD集成及AI测试应用,助力测试工程师掌握前沿技术,打造高效稳定的测试流程。
Playwright进阶指南 (6) | 自动化测试实战
|
4月前
|
人工智能 数据可视化 测试技术
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
634 11
|
4月前
|
安全 Linux PHP
Web渗透-命令执行漏洞-及常见靶场检测实战
命令执行漏洞(RCE)指应用程序调用系统命令时,用户可控制输入参数,导致恶意命令被拼接执行,从而危害系统安全。常见于PHP的system、exec等函数。攻击者可通过命令连接符在目标系统上执行任意命令,造成数据泄露或服务瘫痪。漏洞成因包括代码层过滤不严、第三方组件缺陷等。可通过参数过滤、最小权限运行等方式防御。本文还介绍了绕过方式、靶场测试及复现过程。
1157 0

热门文章

最新文章