选择、操作web元素-3

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

# 浏览器退出

时间: 2024-11-11 00:47:16

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

selenium-xpath选择操作web元素

1.根据属性选择 (1)//*[@style]选择所有具有style属性的元素   #css写法  *[style] (2)//p[@spec='len2‘选择所有具有spec值为len2的元素   #css写法p[spec=len2] 2.根据id选择 id,class也是属性 //div[@id="food"]  #css写法#food //div[@class="cheese"]  #css写法.cheese 3.子元素选择 选择属于其父元素的第n个某个类型的

选择、操作web元素

11月1日 什么是web元素 Selenium自动化主要就是:选择界面元素,操作界面元素(输入操作:点击.输入文字.拖拽等,输出操作:获取元素的各种属性),根据界面上获取的数据进行分析和处理 选择元素 webdriver:操作整个浏览器和当前整个页面 当前页面上的选择符合查找条件的对象 打开网页,回退,前进,刷新网页 获取.改变浏览器窗口的大小,关闭浏览器,截屏 获取.设置cookies WebElement:操作和对应web元素 当前web元素的所有子元素里面符合查找条件的对象 操作该web元

jQuery实战:创建元素包装集,选择将被操作的元素

看完你能学到什么? 1.利用基本CSS选择器 2.利用子选择器.容器选择器和特性选择器 3.通过位置选择 4.利用自定义jQuery选择器 几乎使用任何jQuery方法的时候,我们必须做的第一件事,就是选择将被操作的页面元素.有时,想要选择的元素集合是易于描述的,例如"页面上的所有链接元素".有时,需要比较复杂的描述,比如"拥有CSS类leftchild的偶数的段落 ". 庆幸的是,jQuery提供了健壮的选择器语法,让我们能轻松,优雅和简明地指定几乎人和元素集合.

选择操作元素

$():使用选择器选择DOM元素并创建新的DOM元素 一.选择将被控制的元素 $(选择器,'该操作的上下文') 上下文参数可以是DOM元素的引用,也可以是包含jQuery选择器的字符串,或者是DOM树的一个子集.                                     基础CSS选择器 *                           匹配所有元素 E                           匹配标签名为E的所有元素 E F                   

JS-002-JavaScript 操作常见 web 元素之二-修改元素属性(以按钮示例)

此文以修改 button 元素属性(例如:添加属性.修改属性.修改颜色样式.边框样式等)为简单示例,演示 js 修改 HTML 元素属性的基本方法,敬请参阅.若有不足之处敬请指正,不胜感激! 多不闲述,就此上码. HTML 源码如下所示: 1 <html> 2 <head> 3 <meta charset='utf-8'> 4 5 <title>JS-002-JavaScript 操作常见 web 元素之二-修改元素属性(以按钮示例)</title&g

jQuery碎语(1) 基础、选择要操作的元素、处理DOM元素

1.基础 jquery对象集: $():jquery对象集合 获取jquery对象集中的元素: 使用索引获取包装器中的javascript元素:var temp = $('img[alt]')[0] 使用jquery的get方法获取jquery对象集中的javascript元素:var temp = $('img[alt]').get(0) 使用jquery的eq方法获取jquery对象集中的jquery对象元素: $('img[alt]').eq(0) $('img[alt]').first(

Web开发技术&mdash;&mdash;JavaScript语法1(操作HTML元素、注释)

JavaScript 通常用于操作 HTML 元素 操作 HTML 元素 如需从 JavaScript 访问某个 HTML 元素,您可以使用 document.getElementById(id) 方法. 请使用 "id" 属性来标识 HTML 元素: 例子 通过指定的 id 来访问 HTML 元素,并改变其内容: <!DOCTYPE html> <html> <body> <h1>My First Web Page</h1>

web进阶之jQuery操作DOM元素&amp;&amp;MySQL记录操作&amp;&amp;PHP面向对象学习笔记

hi 保持学习数量和质量 1.jQuery操作DOM元素 ----使用attr()方法控制元素的属性 attr()方法的作用是设置或者返回元素的属性,其中attr(属性名)格式是获取元素属性名的值,attr(属性名,属性值)格式则是设置元素属性名的值. 控制就是获取以及设置 <h3>attr()方法设置元素属性</h3> <a href="http://127.0.0.1" id="a1">点我就变</a> <d

DOM元素选择 属性操作 事件操作 节点操作 创建元素的区别

DOM 获取页面元素 document.getElementById('id'); // id 选择器 document.getElementsByTagName('div'); // 标签选择器 返回伪数组 // html新增 document.getElementsByClassName('box'); // 类名学则器 document.querySelector('#id'): // 返回指定选择器的第一个元素对象,里面写css选择器 document.querySelectorAll(