• selenium作业题


    Selenium 作业 1

    1. 请到如下网址下载最新Chrome浏览器 的 web driver 驱动

    https://chromedriver.storage.googleapis.com/index.html

    1. pip 安装Selenium Web driver Python 客户端库
    练习1
    
    
    1 访问如下网站,
    http://121866.com
    
    先注册一个账号, 记住用户名和密码。
    
    2 然后开发一个自动化程序, 使用 用户名密码 自动化登录该网站,
    并通过检查登录后右上角显示的用户名判断,是否登录成功。
    
    
    
    
    练习2
    
    
    1. 访问天气查询网站(网址如下),查询江苏省天气 
    http://www.weather.com.cn/html/province/jiangsu.shtml
    
    2. 获取江苏所有城市的天气,并找出其中每天最低气温最低的城市,显示出来,比如 
    温度最低为12℃, 城市有连云港 盐城 
    
    练习1
    from selenium import webdriver
    import time
    
    driver = webdriver.Chrome(r"d:	oolswebdriverschromedriver.exe")
    
    # ------------------------
    driver.get('http://121866.com/cust/sign.html')
    
    driver.find_element_by_id("username").send_keys('xxxx')
    driver.find_element_by_id("password").send_keys('xxxx')
    
    driver.find_element_by_id("btn_sign").click()
    time.sleep(2)
    
    expectStr = driver.find_element_by_id("username").text
    if 'xxxx' ==  expectStr:
        print('测试通过')
    else:
        print('测试不通过')
    
    # ------------------------
    input()
    driver.quit()
    练习2
    from selenium import webdriver
    driver = webdriver.Chrome()
    driver.get("http://www.weather.com.cn/html/province/jiangsu.shtml")

    cityWeather = driver.find_element_by_id("forecastID").text.split("℃ ")
    print(cityWeather)

    lowestweather = 100
    lowestcity = []
    for one in cityWeather:
    one = one.replace(u'℃','')
    print(one)
    curweather = int(one.split(' ')[-1].split('/')[-1])
    if curweather < lowestweather:
    lowestweather = curweather
    lowestcity.append(one.split(' ')[-2])
    elif curweather == lowestweather:
    lowestcity.append(one.split(' ')[-2])

    print('温度最低为%s℃, 城市有%s' % (lowestweather, ' '.join(lowestcity)))
    driver.quit()

      方法2:

    from selenium import webdriver
    driver = webdriver.Chrome()
    driver.get("http://www.weather.com.cn/html/province/jiangsu.shtml")
    
    cityWeather = driver.find_element_by_id("forecastID").text.split("℃
    ")
    print(cityWeather)
    
    lowestweather = 100
    lowestcity = []
    for one in cityWeather:
        one = one.replace(u'℃','')
        print(one)
        curweather = int(one.split('
    ')[-1].split('/')[-1])
        if curweather < lowestweather:
            lowestweather = curweather
            lowestcity.append(one.split('
    ')[-2])
        elif curweather == lowestweather:
            lowestcity.append(one.split('
    ')[-2])
    
    print('温度最低为%s℃, 城市有%s' % (lowestweather, ' '.join(lowestcity)))
    driver.quit()
    

      

    Selenium 作业 2

    打开百度新歌榜, http://music.baidu.com/top/new
    
    在排名前50的歌曲中,找出其中排名上升的歌曲和演唱者
     
    注意: 有的歌曲名里面有 "影视原声" 这样的标签, 要去掉
    
    
    最终结果显示的结果如下:
    我不能忘记你       :  林忆莲
    等                :  严艺丹
    飞天              :  云朵
    粉墨              :  霍尊
    春风十里不如你     :  李健
    
    方法1
    # coding:utf8
    from selenium import webdriver
    
    driver = webdriver.Chrome(r"d:	oolswebdriverschromedriver.exe")
    # driver.implicitly_wait(1)
    # 抓取排行榜信息
    
    driver.get('http://music.baidu.com/top/new')
    
    # 层层往下查找
    div = driver.find_element_by_id("songListWrapper")
    ul = div.find_element_by_tag_name("ul")
    liList = ul.find_elements_by_tag_name('li')
    
    for li in liList:
        # 哪些 是有 有up 标签的 歌曲, F12 查看特性
        upTags = li.find_elements_by_class_name("up")
        if upTags:
    
            # 由于只要 歌曲名和 演唱者名
            title = li.find_element_by_class_name("song-title")
            titleStr = title.find_element_by_tag_name("a").text
    
            authorsStr = li.find_element_by_class_name("author_list").text
    
            print('{:10s}:{}'.format(titleStr, authorsStr))
    
    driver.quit()
    

      方法2:

    # encoding:utf-8
    from selenium import webdriver
    from time import sleep
    driver = webdriver.Chrome()
    driver.get("http://music.taihe.com/top/new")
    sleep(5)
    try:
        driver.find_element_by_xpath('//*[@id="subPage"]/div[8]/div[2]/span').click()
        print("广告已经被点击掉")
    except Exception as e:
        print("searchKey: there is no suspond Page1. e = {e}")
    sleep(2)
    div = driver.find_element_by_id("songListWrapper")
    ul = div.find_element_by_tag_name("ul")
    liList = ul.find_elements_by_tag_name("li")
    
    for li in liList:
        cla = li.find_elements_by_class_name("down")
        spa = li.find_elements_by_class_name("appendix")
        if len(cla) > 0:
            title = li.find_element_by_class_name("song-title ")
            yuanMa = title.text
            # print(yuanMa)
            if "影视原声" not in yuanMa:
                titleStr = title.find_element_by_tag_name("a").text
                authorList = li.find_element_by_class_name("author_list").text
                print(titleStr, authorList)
    
    driver.quit()
    

      

    Selenium 作业 3

    登录 51job ,
    http://www.51job.com
    
    输入搜索关键词 "python", 地区选择 "杭州"(注意,如果所在地已经选中其他地区,要去掉), 
    搜索最新发布的职位, 抓取页面信息。 得到如下的格式化信息
    
    Python开发工程师 | 杭州纳帕科技有限公司 | 杭州 | 0.8-1.6万/月 | 04-27
    Python高级开发工程师 | 中浙信科技咨询有限公司 | 杭州 | 1-1.5万/月 | 04-27
    高级Python开发工程师 | 杭州新思维计算机有限公司 | 杭州-西湖区 | 1-1.5万/月 | 04-27
    

     

    方法一
    # coding:utf8
    from selenium import webdriver
    
    driver = webdriver.Chrome(r"d:	oolswebdriverschromedriver.exe")
    # 别忘了设置
    driver.implicitly_wait(10)
    
    # 抓取信息
    driver.get('http://www.51job.com')
    
    driver.find_element_by_id('kwdselectid').send_keys('python')
    # 点击工作地点
    driver.find_element_by_id('work_position_input').click()
    
    
    # 选择所有城市,去掉非杭州的且选择杭州,
    # 如果是杭州但是没有选,选上这些城市
    cityEles = driver.find_elements_by_css_selector('#work_position_click_center_right em')
    
    for one in cityEles:
        cityName = one.text
        selected = one.get_attribute('class')
        # print cityName,seleted
    
        if cityName == u'杭州':
            if selected != 'on':
                one.click()
    
        else:
            if selected == 'on':
                one.click()
    
    # 保存城市选择
    driver.find_element_by_id('work_position_click_bottom_save').click()
    
    # 点击搜索
    driver.find_element_by_css_selector('.ush  button').click()
    
    # 搜索结果分析
    jobs = driver.find_elements_by_css_selector('#resultList  div.el')
    
    for job in jobs:
        # 去掉第一行:标题行
        if 'title' in job.get_attribute('class'):
            continue
    
        filelds = job.find_elements_by_tag_name('span')
        strField = [fileld.text for fileld in filelds]
        print (' | '.join(strField))
    
    
    driver.quit()
    方法二
    # coding:utf8
    from selenium import webdriver
    
    driver = webdriver.Chrome(r"d:	oolswebdriverschromedriver.exe")
    driver.implicitly_wait(10)
    
    
    driver.get('http://www.51job.com')
    
    driver.find_element_by_id('kwdselectid').send_keys('python')
    driver.find_element_by_id('work_position_input').click()
    
    
    # 选择城市,去掉非杭州的,选择杭州
    selectedCityEles = driver.find_elements_by_css_selector(
        '#work_position_click_center_right_list_000000 em[class=on]')
        
    
    for one in selectedCityEles:
        one.click()
    
    driver.find_element_by_id('work_position_click_center_right_list_category_000000_080200').click()
    
    # 保存城市选择
    driver.find_element_by_id('work_position_click_bottom_save').click()
    driver.find_element_by_css_selector('div.ush > button').click()
    
    # 搜索结果分析
    jobs = driver.find_elements_by_css_selector('#resultList div[class=el]')
    for job in jobs:
    
        fields = job.find_elements_by_tag_name('span')
        stringFilelds = [field.text for field in fields]
        print (' | '.join(stringFilelds))
    
    
    
    driver.quit()
    

      方法2:

    from selenium import webdriver
    import time
    # 使用火狐浏览器,打开51job的链接
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)
    driver.get("https://www.51job.com/")
    # 定位到输入框,并输入python
    driver.find_element_by_id("kwdselectid").send_keys('python')
    # 点击城市
    pot = driver.find_element_by_xpath('//*[@id="work_position_click"]')
    pot.click()
    # 定位到城市的上层
    cityEles = driver.find_elements_by_css_selector('#work_position_click_center_right em')
    # 获取城市名称、以及是否选中
    for one in cityEles:
        cityName = one.text
        selected = one.get_attribute('class')
    
        # 如果城市名称叫杭州 并且未被选中就点击一下选中
        if cityName == u'杭州':
            if selected != 'on':
                one.click()
        # 如果城市名称不叫杭州 但是被选中了就点击一下取消选择
        else:
            if selected == 'on':
                one.click()
    # 点击确定按钮,关闭城市窗口
    driver.find_element_by_id("work_position_click_bottom_save").click()
    time.sleep(2)
    # 在主页面点击搜索按钮,等待两秒之后,再结果页面打印所有表格中内容
    driver.find_element_by_xpath('/html/body/div[3]/div/div[1]/div/button').click()
    time.sleep(2)
    # 定位到表格的行所在的位置
    resultList = driver.find_elements_by_css_selector('#resultList div.el')
    for re in resultList:
            # 表格的第一行不要
            if 'title' in re.get_attribute('class'):
                    continue
            # 通过循环获取每一行的内容,把换行用|代替
            t1 = re.text.replace("
    ", "|")
            # 打印出所有内容
            print(t1)
    driver.quit()
    

      

    Selenium 作业 4

    登录 http://www.51job.com
        点击高级搜索
        输入搜索关键词 python 
        地区选择 杭州
        职能类别 选 计算机软件 -> 高级软件工程师
        公司性质选 外资 欧美
        工作年限选 1-3 年
        
    搜索最新发布的职位, 抓取页面信息。 得到如下的格式化信息
     
        Python开发工程师 | 杭州纳帕科技有限公司 | 杭州 | 0.8-1.6万/月 | 04-27
        Python高级开发工程师 | 中浙信科技咨询有限公司 | 杭州 | 1-1.5万/月 | 04-27
    

     

    # coding:utf8
    from selenium import webdriver
    executable_path = r"d:	oolswebdriverschromedriver.exe"
    
    driver = webdriver.Chrome(executable_path)
    driver.implicitly_wait(10)
    
    # 打开网址
    driver.get('http://www.51job.com')
    
    # 选择高级搜索 
    driver.find_element_by_css_selector('div.ush > a').click()
    
    
    # 输入选择关键词
    driver.find_element_by_id('kwdselectid').send_keys('python')
    
    # 工作地点选择
    driver.find_element_by_id('work_position_input').click()
    
    # 取消 已经选择的
    selectedCityEles = driver.find_elements_by_css_selector('#work_position_click_center em[class=on]')
    
    for one in selectedCityEles:
        one.click()
    
    # 选杭州
    driver.find_element_by_id('work_position_click_center_right_list_category_000000_080200').click()
    
    # 保存选择
    driver.find_element_by_id('work_position_click_bottom_save').click()
    
    
    # 要点一下别的地方, 否则下面的元素会被挡住
    driver.find_element_by_css_selector('div.tit').click()
    
    
    
    # 职能类别 选 计算机软件 -> 高级软件工程师
    
    driver.find_element_by_id('funtype_click').click()
    
    
    driver.find_element_by_id('funtype_click_center_right_list_category_0100_0100').click()
    
    driver.find_element_by_id('funtype_click_center_right_list_sub_category_each_0100_0106').click()
    
    
    driver.find_element_by_id('funtype_click_bottom_save').click()
    
    # 公司性质选 外资 欧美
    driver.find_element_by_id('cottype_list').click()
    driver.find_element_by_css_selector('#cottype_list span.li[data-value="01"]').click()
    
    # 工作年限选
    driver.find_element_by_id('workyear_list').click()
    driver.find_element_by_css_selector('#workyear_list span.li[data-value="02"]').click()
    
    # 点击搜索
    driver.find_element_by_css_selector('div.p_sou > span.p_but').click()
    
    # 结果列表获取内容
    jobs = driver.find_elements_by_css_selector('#resultList div[class=el]')
    
    
    for job in jobs:
        fields = job.find_elements_by_tag_name('span')
        stringFilelds = [field.text for field in fields]
        print (' | '.join(stringFilelds))
    
    
    driver.quit()
    

     方法2:

    # encoding utf-8
    
    from selenium import webdriver
    from time import sleep
    
    driver = webdriver.Chrome()
    driver.get("https://www.51job.com/")
    driver.implicitly_wait(3)
    
    # 点击高级搜索
    driver.find_element_by_css_selector('div.ush.top_wrap a.more').click()
    # 输入python
    driver.find_element_by_id('kwdselectid').send_keys('python')
    # 点击城市
    driver.find_element_by_id('work_position_input').click()
    # 将杭州以外的城市取消选择
    emList = driver.find_elements_by_css_selector('#work_position_click_center_right em')
    for em in emList:
        cityName = em.text
        check = em.get_attribute('class')
    
        if cityName != '杭州':
            if check == 'on':
                em.click()
        else:
            if check != 'on':
                em.click()
    # 点击确定按钮
    sleep(2)
    driver.find_element_by_id('work_position_click_bottom_save').click()
    driver.find_element_by_css_selector('div.tit').click()
    # 在高级搜索页面点击职能类别
    driver.find_element_by_id('funtype_click').click()
    # 在职能页面选择高级开发工程师
    driver.find_element_by_id('funtype_click_center_right_list_category_0100_0100').click()
    driver.find_element_by_id('funtype_click_center_right_list_sub_category_each_0100_0106').click()
    driver.find_element_by_id('funtype_click_bottom_save').click()
    
    # 选择外派欧美
    driver.find_element_by_css_selector('#cottype_list span').click()
    driver.find_element_by_css_selector('#cottype_list span.li[data-value="01"]').click()
    
    # 选择工作年限选 1-3 年,点击搜索
    driver.find_element_by_id('workyear_list').click()
    driver.find_element_by_css_selector('#workyear_list span.li[data-value="02"]').click()
    driver.find_element_by_css_selector('div.p_sou > span.p_but').click()
    sleep(2)
    # 打印出搜索出的信息
    elList = driver.find_elements_by_css_selector('.dw_table .el')
    for el in elList:
        if 'title' in el.get_attribute('class'):
            continue
        print(el.text.replace("
    ","|"))
    driver.quit()
    

      

    Selenium 作业 5

    打开 12306 网站  https://kyfw.12306.cn/otn/leftTicket/init
    
    出发城市 填写 ‘南京南’, 到达城市 填写 ‘杭州东’ 
    注意输入城市名前,一定要先点击一下输入框,否则查不到。 
    而且输入城市名最后要包含一个回车符,否则输入框里面会自动清除
    
    发车时间 选 06:00--12:00
    
    发车日期选当前时间的下一天,也就是日期标签栏的,第二个标签
    
    我们要查找的是所有 二等座还有票的车次,打印出这些有票的车次的信息(这里可以用xpath),结果如下:
    
    G7641
    G1505
    G7393
    G7689
    

     

    from selenium import webdriver
    from selenium.webdriver.support.ui import Select
    
    
    driver = webdriver.Chrome(r"d:	oolswebdriverschromedriver.exe")
    driver.implicitly_wait(10)
    
    driver.get('https://kyfw.12306.cn/otn/leftTicket/init')
    
    fromEle = driver.find_element_by_id('fromStationText')
    # 为什么这里要点击一下
    fromEle.click()
    
    fromEle.clear()
    fromEle.send_keys(u'南京南
    ')
    
    toEle = driver.find_element_by_id('toStationText')
    
    toEle.click()
    toEle.clear()
    toEle.send_keys(u'杭州东
    ')
    
    # 输入开始时间,
    timeSelect =  Select(driver.find_element_by_id('cc_start_time'))
    timeSelect.select_by_visible_text('06:00--12:00')
    
    
    tomorrow = driver.find_element_by_css_selector('#date_range li:nth-child(2)')
    # 点击这个,就会搜索车次了
    tomorrow.click()
    
    # 方法一:用xpath实现获取二等座有票的车次信息
    print('
    
    
    ===============================
    
    
    ')
    xpath ='//*[@id="queryLeftTable"]//td[4][@class]/../td[1]//a'
    
    theTrains = driver.find_elements_by_xpath(xpath)
    for one in theTrains:
        print (one.text)
    
    
    
    # 方法二:用css实现获取二等座有票的车次信息
    print('
    
    
    ===============================
    
    
    ')
    theTrainLines = driver.find_elements_by_css_selector('#queryLeftTable > tr')
    # 先不加这个,发现特别慢
    driver.implicitly_wait(0)
    for one in theTrainLines:
        secondlevelseat = one.find_elements_by_css_selector('td:nth-of-type(4)[class]')
        if secondlevelseat:
            print (one.find_element_by_css_selector('td:nth-of-type(1) a').text)
    driver.implicitly_wait(10)
    
    
    driver.quit()
    

      

    Selenium 作业 6

    -- 作业1
    
    
    登录华为官网 https://www.vmall.com/, 
    点击 "华为官网" 和  "更多精彩->应用市场" 两个链接
    
    检查 "华为官网" 页面上是否 有如下主菜单
    
      智能手机
      笔记本&平板
      穿戴设备
      智能家居
      更多产品
      软件应用
      服务与支持
      华为商城
    
    检查 "应用市场" 页面上是否 有如下主菜单
    
      首页
      游戏
      软件
      专题
      品牌专区
      华为软件专区
    
    最后再回到主窗口, 检查鼠标停留在 "笔记本&平板" 处的时候, 是否显示的菜单有
    "平板电脑  笔记本电脑 笔记本配件"
    
    怎么模拟鼠标停留事件,请大家自行网上搜索,看看能不能自己解决问题。
    
    
    
    -- 作业2
    写一个程序实现如下的自动化过程
    
    - 登录   121866.com 
    - 选择 发广告,
    - 输入标题和 一些文本内容
    - 选择 插图,在本地目录中选择一张准备好的图片 , 查看是否能够上传图片成功

    # coding=utf-8
    from selenium import webdriver
    
    
    driver = webdriver.Chrome(r"d:	oolswebdriverschromedriver.exe")
    driver.implicitly_wait(20)
    
    driver.get('https://www.vmall.com/')
    
    driver.find_element_by_css_selector("div.s-sub a[href*='consumer.huawei']").click()
    
    
    driver.find_element_by_css_selector("div.s-sub    a.icon-dropdown").click()
    driver.find_element_by_css_selector("a[href*='appstore.huawei.com']").click()
    
    
    def checkHuawei():
        expected = '智能手机|笔记本&平板|穿戴设备|智能家居|更多产品|软件应用|服务与支持|华为商城'
    
    
        eles = driver.find_elements_by_css_selector(".menu_cn>ul>li")
        eleTexts = [ele.text for ele in eles]
        actual = '|'.join(eleTexts)
        if actual == expected:
            print('huawei page pass')
        else:
            print('huawei page fail!!!!')
    
    
    def checkAppmarket():
        expected = u'''首页|游戏|软件|专题|品牌专区|华为软件专区'''
    
        eles = driver.find_elements_by_css_selector("ul.ul-nav   li")
        eleTexts = [ele.text for ele in eles]
        actual = '|'.join(eleTexts)
        if actual == expected:
            print('app page pass')
        else:
            print('app page fail!!!!')
    
    
    def checkVmall():
        expected = u'''平板电脑|笔记本电脑|笔记本配件'''
        from selenium.webdriver.common.action_chains import ActionChains
        ac = ActionChains(driver)
        ac.move_to_element(driver.find_element_by_id('zxnav_1')).perform()
    
        eles = driver.find_elements_by_css_selector('#zxnav_1 li.subcate-item')
        eleTexts = [ele.text for ele in eles]
        actual = '|'.join(eleTexts)
        if actual == expected:
            print('main page pass')
        else:
            print('main page fail!!!!')
    
    
    mainWindow = driver.current_window_handle
    
    for handle in driver.window_handles:
        driver.switch_to.window(handle)
        if '消费者业务官网' in driver.title:
            checkHuawei()
        elif '应用市场' in driver.title:
            checkAppmarket()
        elif '商城官网' in driver.title:
            checkVmall()
    
    driver.switch_to.window(mainWindow)
    checkVmall()
    
    input('
    press to quit...')
    driver.quit()
    

      

  • 相关阅读:
    解决Nginx不支持pathinfo的问题
    PHP获取当前服务器信息的基本语句
    权重结构的加权排序算法
    《深入探讨C++对象模型》笔记 二
    链表的一些常用操作
    invalidate作用
    GetMessage()和PeekMessage()区别
    C语言程序编译的内存分配
    assert() 宏用法
    开始写博客
  • 原文地址:https://www.cnblogs.com/xiao-qing/p/9230868.html
Copyright © 2020-2023  润新知