Selenium系列(十八) - Web UI 自動化基礎實戰(5)


如果你還想從頭學起Selenium,可以看看這個系列的文章哦!

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

 

其次,如果你不懂前端基礎知識,需要自己去補充哦,博主暫時沒有總結(雖然我也會,所以我學selenium就不用復習前端了哈哈哈...)

 

注意,目前的實戰都是流水賬式寫的,后面才會結合框架+PO模式

目的是為了掌握所學的Selenium基礎

 

實戰題目

  1. 打開 12306 網站 https://kyfw.12306.cn/otn/leftTicket/init
  2. 出發城市 填寫 ‘南京南’, 到達城市 填寫 ‘杭州東'
  3. 發車時間 選 06:00--12:00
  4. 發車日期選當前時間的下一天,也就是日期標簽欄的,第二個標簽
  5. 我們要查找的是所有 二等座還有票的車次,打印出這些有票的車次的信息,結果如下:

G7641

G1505

G7393

G7689

 

代碼思路(人為測試時的操作步驟)

  1. 點擊【出發城市】,輸入並點擊南京南
  2. 點擊【到達城市】,輸入並點擊杭州東
  3. 選擇發車時間 06:00--12:00
  4. 選擇第二個日期標簽
  5. 獲取到車次列表
  6. 循環列表,獲取車次號和二等座那一列的數據
  7. 正則匹配是否有坐
  8. 輸出車次號

 

代碼

#!/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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM