1. 程式人生 > >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

 

 

 

 

程式碼思路

  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()

&n