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:\tools\webdrivers\chromedriver.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(r"d:\tools\webdrivers\chromedriver.exe")

# ------------------------
driver.get('http://www.weather.com.cn/html/province/jiangsu.shtml')

ele = driver.find_element_by_id("forecastID")
print(ele.text)

''' 
citysWeather是每个城市的温度信息 list

每个元素像这样:
南京
12℃/27
'''
citysWeather = ele.text.split(u'℃\n')


# 算出温度最低城市

lowest = 100
lowestCity = []  # 温度最低城市列表
for one in citysWeather:
    one = one.replace(u'℃','')
    print(one)
    curcity = one.split('\n')[0]
    lowweather = one.split('/')[1]
    lowweather = int(lowweather)
    # 发现气温更低的城市
    if lowweather<lowest:
        lowest = lowweather
        lowestCity = [curcity]
    #  温度和当前最低相同,加入列表
    elif lowweather ==lowest:
        lowestCity.append(curcity)

print('温度最低为%s℃, 城市有%s' % (lowest, ' '.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:\tools\webdrivers\chromedriver.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()

  

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:\tools\webdrivers\chromedriver.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:\tools\webdrivers\chromedriver.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()

  

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:\tools\webdrivers\chromedriver.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()

  

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:\tools\webdrivers\chromedriver.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'南京南\n')

toEle = driver.find_element_by_id('toStationText')

toEle.click()
toEle.clear()
toEle.send_keys(u'杭州东\n')

# 输入开始时间,
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('\n\n\n===============================\n\n\n')
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('\n\n\n===============================\n\n\n')
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:\tools\webdrivers\chromedriver.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('\npress to quit...')
driver.quit()

  

猜你喜欢

转载自www.cnblogs.com/xiao-qing/p/9230868.html