Selenium系列(十八) - Web UI 自动化基础实战(5)
如果你还想从头学起Selenium,可以看看这个系列的文章哦!
https://www.cnblogs.com/poloyy/category/1680176.html
其次,如果你不懂前端基础知识,需要自己去补充哦,博主暂时没有总结(虽然我也会,所以我学selenium就不用复习前端了哈哈哈...)
注意,目前的实战都是流水账式写的,后面才会结合框架+PO模式
目的是为了掌握所学的Selenium基础
实战题目
- 打开 12306 网站 https://kyfw.12306.cn/otn/leftTicket/init
- 出发城市 填写 ‘南京南’, 到达城市 填写 ‘杭州东'
- 发车时间 选 06:00--12:00
- 发车日期选当前时间的下一天,也就是日期标签栏的,第二个标签
- 我们要查找的是所有 二等座还有票的车次,打印出这些有票的车次的信息,结果如下:
G7641
G1505
G7393
G7689

代码思路(人为测试时的操作步骤)
- 点击【出发城市】,输入并点击南京南
- 点击【到达城市】,输入并点击杭州东
- 选择发车时间 06:00--12:00
- 选择第二个日期标签
- 获取到车次列表
- 循环列表,获取车次号和二等座那一列的数据
- 正则匹配是否有坐
- 输出车次号
代码
#!/usr/bin/env python
# -*- coding: utf-8 -*- """
__title__ =
__Time__ = 2020-03-31 21:30
__Author__ = 小菠萝测试笔记
__Blog__ = https://www.cnblogs.com/poloyy/
"""
import re
from time import sleep
from selenium.webdriver.support.select import Select
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.wait import WebDriverWait driver = webdriver.Chrome("../resources/chromedriver.exe") def wait_element(by_, element_):
element = WebDriverWait(driver, timeout=10).until(
ec.presence_of_element_located((by_, element_))
)
return element def wait_elements(by_, element_):
element = WebDriverWait(driver, timeout=10).until(
ec.presence_of_all_elements_located((by_, element_))
)
return element # 打开网站
driver.get("https://kyfw.12306.cn/otn/leftTicket/init")
driver.maximize_window() # 出发城市 填写 ‘南京南’,
from_ = wait_element(By.CSS_SELECTOR, "input#fromStationText")
from_.click()
from_.send_keys("南京南")
# 选择南京南
driver.find_element_by_css_selector("div#citem_0").click() # 到达城市 填写 ‘杭州东’
to = wait_element(By.CSS_SELECTOR, "input#toStationText")
to.click()
to.send_keys("杭州东")
# 选择杭州东
driver.find_element_by_css_selector("div#citem_0").click() # 发车时间 选 06:00--12:00
select = Select(driver.find_element_by_css_selector("select#cc_start_time"))
# 选择
select.select_by_visible_text("06:00--12:00") # 发车日期选当前时间的下一天,也就是日期标签栏的,第二个标签
date_range = driver.find_elements_by_css_selector("div#date_range>ul>li")
date_range[1].click() # 数据列表
lists = wait_elements(By.CSS_SELECTOR, "tbody#queryLeftTable>tr")[0::2]
print(len(lists))
# 循环数据
for data in lists:
number = data.find_element_by_css_selector("td>div>div.train a.number").text
two = data.find_elements_by_css_selector("td")[3].text
if re.findall("有|\d+", two):
print(number) sleep(10)
driver.quit()
Selenium系列(十八) - Web UI 自动化基础实战(5)的更多相关文章
- selenium(12)-web UI自动化项目实战(PO模式,代码封装)
web UI自动化项目实战-项目 项目使用禅道,所以你需要搭建1个禅道,搭建禅道的方法和步骤见 https://www.cnblogs.com/xinhua19/p/13151296.html 搭建U ...
- Selenium系列(十四) - Web UI 自动化基础实战(1)
如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...
- Selenium系列(十五) - Web UI 自动化基础实战(2)
如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...
- Selenium系列(十六) - Web UI 自动化基础实战(3)
如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...
- Selenium系列(十九) - Web UI 自动化基础实战(6)
如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...
- Selenium系列(十七) - Web UI 自动化基础实战(4)
如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...
- Web 前端开发精华文章集锦(jQuery、HTML5、CSS3)【系列十八】
<Web 前端开发精华文章推荐>2013年第六期(总第十八期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HTML5 和 C ...
- 任务三十八:UI组件之排序表格
任务三十八:UI组件之排序表格 面向人群: 有一定JavaScript基础 难度: 低 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容的质 ...
- Python Selenium 搭建Web UI自动化
Python搭建UI自动化环境 下载Python3 Python官网 PyCharm 环境配置 安装Python 勾选Add Python to PATH,一直下一步. 验证:CMD输入Python ...
随机推荐
- Kibana未授权访问(5601)
漏洞检测 http://172.16.16.212:5601/app/kibana#/ 无需账号密码可以登录进入界面.
- Elasticsearch(9300、9200)未授权访问
下载地址https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.0.zip 检测 http://localhost ...
- 裸奔mysql
centos 7 下裸奔mysql # vim /etc/my.cnf在[mysqld]的段中加上一句:skip-grant-tables例如:[mysqld]datadir=/var/lib/mys ...
- matlab快速入门
matlab快速入门 1矩阵 生成矩阵 % 直接法 a = [1,2,3;4,5,6;7,8,9]; % 冒号一维矩阵 a = 开始:步长:结束,步长为1可省略 b = 1:1:10; % 1,2 ...
- MySQL数据库优化(2)
MySQL优化 大批量插入数据优化 1.将数据按照id有序排列 2.使用load关键字(100万条:有序20s,无序1分50秒) 3.插入之前,关闭唯一性校验(SET UNIQUE_CHECKS=0) ...
- 安鸾CTF-cookies注入
什么是cookie注入? cookie注入的原理是:修改cookie的值进行注入 cookie注入其原理也和平时的注入一样,只不过注入参数换成了cookie 例如:PHP $_REQUEST 变量变量 ...
- DVWA靶场之File Upload(文件上传)通关
Low: <?php if( isset( $_POST[ 'Upload' ] ) ) { // Where are we going to be writing to? $target_pa ...
- LNMP 方式部署 zabbix 5.0
文章链接 Zabbix 5.0 LTS新增功能 新版本附带了可用性,安全性和完整性方面的重大改进列表.Zabbix团队遵循的主要策略是使Zabbix尽可能可用.Zabbix是一种开源,免费的监视解决方 ...
- NOIP 模拟 $25\; \rm string$
题解 \(by\;zj\varphi\) 考虑对于母串的每个字符,它在匹配串中有多少前缀,多少后缀. 设 \(f_i\) 表示 \(i\) 位置匹配上的前缀,\(g_i\) 为后缀,那么答案为 \(\ ...
- 题解 P3941 入阵曲
题解 观察数据范围,可以 \(\mathcal O(n^2m^2)\) 暴力计算,而加上特殊性质,则可以骗到 \(75pts\) 正解: 我们发现,在一维情况下,\(\mod k\) 相同的前缀和相减 ...