📝 面试求职: 「面试试题小程序」内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


第一版写的比较粗糙,简单实现了12306自动化购票流程

有想法和疑问,可在留言区留言一起探讨!!!

第二版想解决的问题:

1、选择乘车人,根据姓名去匹配选择

2、选择靠窗座位/过道座位,不同车次座位是不同的处理、售卖完的座位无法选择的处理

3、循环持续抢票,直至抢到票位置

4、多车次切换抢票,A票抢不到,再抢B,B车次抢不到,再抢C,持续抢票

在这里插入图片描述
1、访问12306网站,进入登录页

登录选用的是12306扫码登录,比较方便,如果账号登录还要输验证码比较麻烦,默认进入是账号登录页,需要先切换至扫码登

driver.find_element(By.XPATH, "//*[contains(text(), '扫码登录')]").click()

在这里插入图片描述
2、登录进来进入个人中心页

如果选择顶部的定位稍微麻烦点,所以就采用点下面车票预定到购票首页,发现这个元素有id,直接id定位即可

driver.find_element(By.ID, "link_for_ticket").click()

在这里插入图片描述3、购票页面出发地、目的地、日期,会有默认值,进来后先清除默认值,再输入自己的出发地、目的地、日期,避免直接输入导致错误,清空直接输入不生效,要点输入区域输入,再点下拉联想的值选中,然后查询列表

fromStation=driver.find_element(By.ID, "fromStationText")fromStation.clear()fromStation.click()fromStation.send_keys("上海")time.sleep(2)driver.find_element(By.ID, "citem_0").click()

在这里插入图片描述4、列表车次数据出来后,不能固定去定位车次的元素,如果每次车次变了,元素还要变,不是想要效果,所以这里先把所有车次元素集合定位出来,然后用要买的车次去循环匹配,匹配上了就预定下单,匹配不上就提示没有这个车次,程序不再继续执行

ele=driver.find_elements(By.XPATH, "//div[@class='train']")for i in range(len(ele)):if "G1970" in ele[i].text:        driver.find_element(By.XPATH, "//div[@id='train_num_{0}']/../../td[13]/a".format(i)).click()break

在这里插入图片描述5、点预定时,有时又会提示登录,可能是12306的某些规则,这里做了特殊处理,如果定位到这个框了,就执行关闭框操作(发现关闭了继续操作不再弹框了,如果后面规则变了,必须要登录,那这里又得继续扫码登录了),如果没定位到,说明没有弹这个框

try:            driver.find_element(By.ID, "login")            time.sleep(3)            driver.find_element(By.ID, "login_close").click()            driver.find_element(By.XPATH, "//div[@id='train_num_{0}']/../../td[13]/a".format(i)).click()except:pass

在这里插入图片描述6、乘车人选择,目前元素是固定写四的,这样写不合理,姓名变了就得改元素,后面想优化为用姓名去匹配选择,支持多人选择

driver.find_element(By.ID, "normalPassenger_0").click()driver.find_element(By.ID, "normalPassenger_1").click()

在这里插入图片描述7、座位类别选择,这里是select标签,用select方法获取到元素的option值,用想要买的座位类别去匹配,这里支持多个座位类别选项,如果想买硬卧,硬卧没了再买软卧,那就可以先匹配硬卧,匹配上了就下单,没匹配上继续匹配软卧,按优先顺序匹配的

select1 = driver.find_element(By.ID,"seatType_1") #第1个人作为类别select2 = driver.find_element(By.ID,"seatType_2") #第1个人作为类别options_list=Select(select1).options#硬座1、硬卧3、软卧4、二等座0、一等座M、商务9、一等卧I、二等卧Jlist1=["一等座","二等座","硬座"]for i in list1:    print(i)for option in options_list:        print(option.text)if i=="一等座" and i in option.text:            Select(select1).select_by_value("M")            Select(select2).select_by_value("M")breakelif i=="二等座" and i in option.text:            Select(select1).select_by_value("0")            Select(select2).select_by_value("0")breakelif i=="硬座" and i in option.text:            Select(select1).select_by_value("1")            Select(select2).select_by_value("1")breakbreak

在这里插入图片描述8、选择靠窗座位还是过道座位,这里目前也是写四未处理的,不同的车次靠窗过道的座位是不一样的,也可能存在,某个靠窗或过道座位卖完了,这里就得做特殊处理

在这里插入图片描述
9、确认订单就可以下单成功了,待人工支付了


最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取 【保证100%免费】
在这里插入图片描述
在这里插入图片描述

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐