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

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

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

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

 

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

 

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

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

 

实战题目


1、访问:http://www.51job.com

2、输入搜索关键词 "python", 地区选择 "北京"(注意,如果所在地已经选中其他地区,要去掉)

3、搜索最新发布的职位, 抓取页面信息。 得到如下的格式化信息

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

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

高级Python开发工程师 | 杭州新思维计算机有限公司 | 杭州-西湖区 | 1-1.5万/月 | 04-27


image.png


代码思路


  1. 定位搜索框,输入python
  2. 点击【地区】
  3. 显式等待,定位所有默认已选中的城市
  4. 取消选中它们
  5. 点击【北京】
  6. 点击【确定】
  7. 点击【搜索】
  8. 定位职位列表,除了第一行
  9. 循环职位列表,获取每一行的信息存入列表
  10. 格式化输出

 

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


# !/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
# 设置元素等待实例,最多等10秒,每0.5秒查找一次
def wait_element(driver, by_, element_, timeout=10):
    element = WebDriverWait(driver=driver, timeout=timeout).until(
        lambda x: x.find_element(by=by_, value=element_)
    )
    return element
# 设置元素等待实例,最多等10秒,每0.5秒查找一次
def wait_elements(driver, by_, element_, timeout=10):
    element = WebDriverWait(driver=driver, timeout=timeout).until(
        lambda x: x.find_elements(by=by_, value=element_)
    )
    return element
# 加载驱动
driver = webdriver.Chrome("../resources/chromedriver.exe")
# 打开网站
driver.get("http://www.51job.com")
driver.maximize_window()
# 搜索框
wait_element(driver, By.CSS_SELECTOR, "#kwdselectid").send_keys("python")
# 地区按钮
wait_element(driver, By.CSS_SELECTOR, "#work_position_input").click()
# 热门城市列表
city_lists = wait_elements(driver, By.CSS_SELECTOR, "div#work_position_click_center_right_list_000000 td em.on")
# 选中北京,取消选中其他城市
for city in city_lists:
    sleep(1)
    city.click()
wait_element(driver, By.CSS_SELECTOR, "em#work_position_click_center_right_list_category_000000_010000").click()
# 确定按钮
driver.find_element_by_css_selector("#work_position_click_bottom_save").click()
# 搜索按钮点击
wait_element(driver, By.CSS_SELECTOR, "div.top_wrap button").click()
# 找到职位列表
lists = wait_elements(driver, By.CSS_SELECTOR, "div#resultList>div.el")[1:]
for data in lists:
    spans = [i.text for i in data.find_elements_by_css_selector("span")]
    print(" | ".join(spans))
sleep(10)
# 退出浏览器
driver.quit()
相关文章
|
7天前
|
前端开发 JavaScript API
探索现代Web开发中的动态数据交互——前端与后端整合实战
本文探讨了现代Web开发中前端与后端整合的关键技术点,通过实际案例演示了如何利用JavaScript和Node.js实现动态数据交互,全面解析从数据请求到响应的全过程。
|
4天前
|
中间件 开发者 C++
Django中间件探索:揭秘中间件在Web应用中的守护角色与实战应用
Django中间件探索:揭秘中间件在Web应用中的守护角色与实战应用
|
8天前
|
存储 Apache 文件存储
在Apache环境下为Web网站增设访问控制:实战指南
在Apache服务器上保护网站资源涉及启用访问控制模块(`mod_authz_core`和`mod_auth_basic`),在`.htaccess`或`httpd.conf`中设定权限,如限制对特定目录的访问。创建`.htpasswd`文件存储用户名和密码,并使用`htpasswd`工具管理用户。完成配置后重启Apache服务,访问受限目录时需提供有效的用户名和密码。对于高安全性需求,可考虑更复杂的认证方法。【6月更文挑战第20天】
67 4
|
8天前
|
安全 Ubuntu 应用服务中间件
NGINX环境下实现Web网站访问控制的实战指南
在NGINX中设置基于IP的访问控制可提升网站安全性。步骤包括安装NGINX、备份配置文件、编辑`/etc/nginx/sites-available/default`,添加`allow`和`deny`指令限制特定IP访问,如`allow 192.168.1.100; deny all;`,然后测试配置并重启服务。成功后,仅允许的IP能访问网站,否则会收到403错误。这为Web安全提供基础保障,还可扩展实现更多高级控制策略。【6月更文挑战第20天】
74 3
|
18天前
|
JSON 安全 关系型数据库
Web实战丨基于django+hitcount的网页计数器
Web实战丨基于django+hitcount的网页计数器
27 5
|
18天前
|
开发框架 API 数据库
Web实战丨基于Django的简单网页计数器
Web实战丨基于Django的简单网页计数器
28 5
|
18天前
|
数据库 数据安全/隐私保护 Python
Web实战丨基于django+html+css+js的电子商务网站
Web实战丨基于django+html+css+js的电子商务网站
38 3
|
18天前
|
前端开发 安全 数据安全/隐私保护
Web实战丨基于django+html+css+js的在线博客网站
Web实战丨基于django+html+css+js的在线博客网站
24 2
|
18天前
|
存储 前端开发 测试技术
Web实战丨基于django+html+css的在线购物商城
Web实战丨基于django+html+css的在线购物商城
35 2
|
18天前
|
数据库 数据安全/隐私保护 Python
Web实战丨基于Django与HTML的新闻发布系统(二)
Web实战丨基于Django与HTML的新闻发布系统(二)
20 1