zoukankan      html  css  js  c++  java
  • Selenium系列(十六)

    如果你还想从头学起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()
  • 相关阅读:
    【ZJ选讲·压缩】
    【ZJ选讲·调整】
    【ZJ选讲·钻石游戏】
    【ZJ选讲·BZOJ 5073】
    【ZJ选讲·BZOJ 5071】
    【模拟赛·polyline】
    【BZOJ 2744 朋友圈】
    【BZOJ 2241 打地鼠】
    【CF edu 30 D. Merge Sort】
    【CF edu 30 C. Strange Game On Matrix】
  • 原文地址:https://www.cnblogs.com/poloyy/p/12631987.html
Copyright © 2011-2022 走看看