11月5日

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') div同时class为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 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()

子元素(child)选择器

选择元素的子元素,

  和后代选择器不同:#choose_car  option;  option不一定是子元素

  比如 #choose_car > option      footer > p;  >必须是直接子元素

  可以是很多级:ul > ol > li > em

组(group)选择

组选择同时选择多个元素,逗号隔开 语法: <s1>,<s2>

比如 p,button       #food, .cheese

组合使用

  选择id为food的的所有span子元素和所有的p(包括非food的子元素) #food > span,p  组选择的优先级最低

  选择id为food的的所有span子元素和所有的p子元素 #food > span, #food  > p

  选择id为food的的所有子元素 #food > *

兄弟节点选择

  选择紧接在另一个元素后的元素,二者有相同的父元素,比如 #food + div ; #many > div > p.special + p   紧接着后面的兄弟节点

  选择在另一个元素后的元素,二者有相同的父元素,比如 #food ~ div,所有的兄弟节点

属性选择器

可以根据元素的属性及属性值来选择元素

  比如

  *[style]

  p[spec=len2]

  p[spec='len2 len3']   中间有空格,所以加引号;没有空格,可加可不加

  p[spec*='len2']   #包含

  p[spec^='len2']  #开头  结尾

  p[span$='len2']

  p[class=special][name=p1]    同时满足两种属性

http://www.w3school.com.cn/cssref/css_selectors.asp

p:nth-child(2)           选择属于其父元素的第二个子元素的每个 <p> 元素

p:nth-last-child(2)    同上,从最后一个子元素开始计数。

p:nth-of-type(2)       选择属于其父元素第二个 <p> 元素的每个 <p> 元素

p:nth-last-of-type(2)  同上,但是从最后一个子元素开始计数

验证CSS选择器,点击elements,按ctrl +F 

element 标签内查找      #choose_car option[value='volvo']

console内   精准的css表达式  $$("choose_car option[value='volvo']")

编辑框的一些操作

用clear方法清除该元素里面字符串 input1.clear()

获取input元素里面输入的文本内容 input1.get_attribute('value')

单选框

对应的html

<input type="radio" name="gender" value="male"> 男<br>

<input type="radio" name="gender" value="female"> 女<br>

click方法选择

input1 = driver.find_element(By.CSS_SELECTOR,"input[value=male]")

input.click()

不管是原来该元素是否选中,直接去点击该元素没有问题,都可以确保该单选框选中

勾选框

对应的html

<input type="checkbox" name="vehicle" value = "bike"> 我有一辆自行车

<input type="checkbox" name="vehicle" value = "car"  checked> 我有一辆汽车

click方法选择

is_selected 方法来获取选择的状态

input1 = driver.find_element(By.CSS_SELECTOR,"input[value=car]")

selected = input1_is_selected()

if selected:

  print ('car already selected')

else:

  print('car not selected,click on it')

  input1.click()

复选框

对应的html

<select multiple>

  <option value='benz'>奔驰S300</option>

  <option value='accord'>雅阁</option>

</select>

<select>

  <option value="male">男</option>

  <option value="female" selected="selected">女</option>

select类

方法deselect_all

方法select_by_visible_text

# coding=utf-8

from selenium import webdriver
driver = webdriver.Chrome(r"d:\tools\webdrivers\chromedriver.exe")
driver.get('file:///D:/gsync/workspace/sq/selenium/samples_selenium/wd/lesson04/ms.html') # 打开网址

# 导入 Select

from selenium.webdriver.support.ui import Select

# 获得相应的WebElement

select = Select(driver.find_element_by_id("multi"))

# 先去选择所有的 选项

select.deselect_all()

select.select_by_visible_text("雅阁")

select.select_by_visible_text("宝马 740")
# 获得相应的WebElement

select = Select(driver.find_element_by_id("single"))

select.select_by_visible_text("男")
input('press any key to quit...')

driver.quit()

# 浏览器退出

选择、操作web元素-3的更多相关文章

  1. 选择、操作web元素-2

    11月3日 等待web元素的出现 例子:百度搜索松勤网,点击操作后不等待页面刷新,下面选择页面元素的时候,该元素还是未出现 sleep方案的弊病:固定的等待时间,导致测试用例执行时间很长 为什么cli ...

  2. 选择、操作web元素

    11月1日 什么是web元素 Selenium自动化主要就是:选择界面元素,操作界面元素(输入操作:点击.输入文字.拖拽等,输出操作:获取元素的各种属性),根据界面上获取的数据进行分析和处理 选择元素 ...

  3. Xpath选择、操作web元素

    11月6日 xpath选择 XPath(XML Path Language)是W3C(World Wide Web Consortium)定义的用来在XML文档中选择节点的语言, 主浏览器也支持XPa ...

  4. Web自动化 - 选择操作元素 1

    文章转自 白月黑羽教Python 所有的 UI (用户界面)操作 的自动化,都需要选择界面元素. 选择界面元素就是:先让程序能找到你要操作的界面元素. 先找到元素,才能操作元素. 选择元素的方法 程序 ...

  5. Web自动化 - 选择操作元素 2

    文章转自 白月黑羽教Python 前面我们看到了根据 id.class属性.tag名 选择元素. 如果我们要选择的 元素 没有id.class 属性, 这时候我们通常可以通过 CSS selector ...

  6. 基于MVC4+EasyUI的Web开发框架经验总结(14)--自动生成图标样式文件和图标的选择操作

    在很多Web系统中,一般都可能提供一些图标的选择,方便配置按钮,菜单等界面元素的图标,从而是Web系统界面看起来更加美观和协调.但是在系统中一般内置的图标样式相对比较有限,而且硬编码写到样式表里面,这 ...

  7. selenium怎么操作web页面常见的元素

    总结一下selenium怎么操作web页面常见的元素. 主要有: 上传 alter dialog prompt dialog confirm dialog select list radio box ...

  8. Appium之选择/操作元素

    Appium是如何选择.操作元素的呢? appium自动化  ------  选择界面 元素 操作元素  ------- ① 点击 ② 输入字符 ③ 拖拽 ④ 获取页面元素的各种属性 根据appium ...

  9. Selenium Web元素操作

    我们定位到Web页面元素之后,可以对元素进行一系列的操作,实现跟页面的交互.包括点击.文本输入.元素属性获取等.常用的方法列举如下: 方法 描述 click() 点击元素 send_keys(**va ...

随机推荐

  1. R语言—统计结果输出至本地文件方法总结

    1.sink()在代码开始前加一行:sink(“output.txt”),就会自动把结果全部输出到工作文件夹下的output.txt文本文档.这时在R控制台的输出窗口中是看不到输出结果的.代码结束时用 ...

  2. ubuntu的一些常用命令及疑难杂症

    记录ubuntu下各种注意事项及常用命令 1,发热:因为硬件厂商对linux类系统的支持不足,驱动不会自动安装,所以要自己装... http://www.linuxidc.com/Linux/2015 ...

  3. Scrapy学习篇(六)之Selector选择器

    当我们取得了网页的response之后,最关键的就是如何从繁杂的网页中把我们需要的数据提取出来,python从网页中提取数据的包很多,常用的有下面的几个: BeautifulSoup它基于HTML代码 ...

  4. Java给整数部分的字符串加上千分位分隔符

    本来想网上找个例子,结果让人很失望,网上的大部分用的DecimalFormat .NumberFormat,我随便搞了一个长点的字符串,发现大部分都有小数进度问题. 而且网上的人,都不测试的,写的例子 ...

  5. RabbitMQ用户角色及权限控制(转)

    转载至:https://blog.csdn.net/awhip9/article/details/72123257 2017年05月15日 10:39:26 awhip9 阅读数:3538   ### ...

  6. Tomcat 环境部署网站. 帆软平台部署.

    主要内容. 需要使用Tomcat 部署 帆软报表平台(以下简称报表平台). 报表平台可以集成到网站, 也可独立部署. 此处是独立部署.即通过 网址:域名 独立访问这个报表平台. -- 技术要点 Tom ...

  7. HBase配置性能调优

    因官方Book Performance Tuning部分章节没有按配置项进行索引,不能达到快速查阅的效果.所以我以配置项驱动,重新整理了原文,并补充一些自己的理解,如有错误,欢迎指正. 配置优化 zo ...

  8. U3D学习08-异步、协程

    1.调用 invoke不能传参, 2.协程(不是线程,拥有自己独立的执行序列) Coroutine(尽可能减少计算,提高运行效率) 需要迭代器IEnumerate,迭代器中有返回方法yield 协程的 ...

  9. CS229 6.15 Neurons Networks Deep Belief Networks

    Hintion老爷子在06年的science上的论文里阐述了 RBMs 可以堆叠起来并且通过逐层贪婪的方式来训练,这种网络被称作Deep Belife Networks(DBN),DBN是一种可以学习 ...

  10. 【Python爬虫实战】pywin32 安装后出现 import win32api ImportError DLL load failed

    windows下执行 scrapy 的指定的时候出现错误, 最初出现错误  提示没有pywin32  那么就去安装了一个pywin32  然后pip安装 https://www.lfd.uci.edu ...