简介:

我们只打开一个页面是没有什么意义的。

尽管你可以get很多次。

selenium可以做的更多,比如找到百度的搜索框,输入我们要搜索的内容,再用鼠标点击搜索按钮,再把搜索结果提取出来……

这篇文章,就是如何找到百度搜索框,输入内容,点击搜索。

原来喜欢用firebug,但是停止更新了,新的firefox开发了个什么Firefox Developer Edition,装了也不怎么会用。

教程就用chrome吧。免插件。

一:认识页面元素

<a href="http://news.baidu.com" name="tj_trnews" class="mnav">新闻</a>

<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">

<input type="submit" id="su" value="百度一下" class="bg s_btn">

这是百度首页当中的三个元素,第一行是顶部的新闻链结,第二行是搜索框,第三行是搜索按钮。

二:认识查找元素的方法

selenium 下  webdriver 对象 有两个方法来帮助我们查找页面元素

driver.find_element()
driver.find_elements()

find_element是查找一个元素

find_elements是查找多个元素

具体方法有:

driver.find_element_by_id()
driver.find_element_by_name()
driver.find_element_by_xpath()
driver.find_element_by_tag_name()
driver.find_element_by_link_text()
driver.find_element_by_class_name()
driver.find_element_by_css_selector()
driver.find_element_by_partial_link_text()
driver.find_elements_by_id()
driver.find_elements_by_name()
driver.find_elements_by_xpath()
driver.find_elements_by_tag_name()
driver.find_elements_by_link_text()
driver.find_elements_by_class_name()
driver.find_elements_by_css_selector()
driver.find_elements_by_partial_link_text()

个人比较喜欢用xpath,因为可以用很多工具生成,省去了自己分析目标页面源码的时间。

三:selenium操作目标

perform
reset_actions
click
click_and_hold
context_click
double_click
drag_and_drop
drag_and_drop_by_offset
key_down
key_up
move_by_offset
move_to_element
move_to_element_with_offset
pause
release
send_keys
send_keys_to_element

虽然有这么多方法,但是我用的也很少啊。

我只用过click,点击

send_keys,输入。

以后用到再说吧。

context_click  右键点击
double_click   双击

四:结合起来一起用

from time import sleep
from selenium import webdriver
#定义浏览器是firefox
driver=webdriver.Firefox()
#页面打开百度
driver.get('http://www.baidu.com')
sleep(1)
#使用id查找kw,并输入 淘宝
driver.find_element_by_id('kw').send_keys('淘宝')
#使用id查找su,并点击
driver.find_element_by_id('su').click()
sleep(3)
#使用name查找wd,清除内容
driver.find_element_by_name('wd').clear()
#使用name查找wd,输入python
driver.find_element_by_name('wd').send_keys('python')
#使用css selector 查找#su 并点击
driver.find_element_by_css_selector("#su").click()
sleep(3)
#这些是使用xpath定位查找。
driver.find_element_by_xpath('//*[@id="kw"]').clear()
driver.find_element_by_xpath('//*[@id="kw"]').send_keys('selenium')
driver.find_element_by_xpath('//*[@id="su"]').click()
sleep(3)
driver.quit()

这段代码就展示了,使用ID NAME CSS SELECTOR 来定位页面元素,并且输入文字,清除文字,点击

五:获取css_selector xpath

这个ID, NAME,页面源码里面还好看到,css_selector xpath,可不好复制,其实也是一样的复制,我是懒人。

1.先讲firefox

在目标上点击右键,选择查看元素

下面会弹出查看器,并且有一行或几行是加了底色的

在加了底色的这部分,继续点右键,复制,xpath

好了,这就有了xpath参数。可以在这个搜索里面验证

没有了firebug,默认的也就提取xpath了。

2,chrome中的操作

也是右键点击,不过chrome叫检查。

弹出的在右侧,也有几行加了背景色。

在有背景色这一部分右键

看到了xpath,还有一个selector 对应的是css_selector

好了,现在我们学会了如何使用浏览器来帮助我们找到xpath,css_selector,编写你的代码,去网站上转一转吧。

selenium(二)查找定位目标 ID XPATH CSS 操作目标的更多相关文章

  1. 《手把手教你》系列技巧篇(十七)-java+ selenium自动化测试-元素定位大法之By css上卷(详细教程)

    1.简介 CSS定位方式和xpath定位方式基本相同,只是CSS定位表达式有其自己的格式.CSS定位方式拥有比xpath定位速度快,且比CSS稳定的特性.下面详细介绍CSS定位方式的使用方法.xpat ...

  2. 《手把手教你》系列技巧篇(十八)-java+ selenium自动化测试-元素定位大法之By css中卷(详细教程)

    1.简介 按计划今天宏哥继续讲解倚天剑-css的定位元素的方法:ID属性值定位.其他属性值定位和使用属性值的一部分定位(这个类似xpath的模糊定位). 2.常用定位方法(8种) (1)id(2)na ...

  3. 《手把手教你》系列技巧篇(十九)-java+ selenium自动化测试-元素定位大法之By css下卷(详细教程)

    1.简介 按计划今天宏哥继续讲解css的定位元素的方法.但是今天最后一种宏哥介绍给大家,了解就可以了,因为实际中很少用. 2.常用定位方法(8种) (1)id(2)name(3)class name( ...

  4. selenium:css_selector定位详解(css selector和xpath的比较)

    selenium使用css selector和xpath的比较 selenium提供的定位方式(常用) ID NAME CLASS CSS SELECTOR XPATH   推荐的定位方式的优先级 优 ...

  5. python+selenium二:定位方式

    # 八种单数定位方式:elementfrom selenium import webdriverimport time driver = webdriver.Firefox()time.sleep(2 ...

  6. selenium 怎么查找定位鼠标移上去显示,移开鼠标就消失的内容

    场景:鼠标移动到一级菜单上二级菜单才显示,移开鼠标二级菜单就消失,如何查找定位二级菜单 操作: 1.打开F12,点击sources 2.鼠标移动到一级菜单“工单管理” 3.按下键盘“Ctrl+\”,暂 ...

  7. 5 Python+Selenium的元素定位方法(xpath)

    [环境] Python3.6+selenium3.0.2+FireFox50+win7 [定位方法] 1.方法:find_element_by_xpath('') 说明:xpath定位方法有相对路径和 ...

  8. 【Selenium01篇】python+selenium实现Web自动化:搭建环境,Selenium原理,定位元素以及浏览器常规操作!

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 二.话不多说,直接开干,开始搭建自动化测试环境 这里以前在 ...

  9. selenium:css_selector定位详解

    selenium:css_selector定位详解(css selector和xpath的比较) 来源:https://www.cnblogs.com/haifeima/p/10138154.html ...

随机推荐

  1. Python3基础 函数 未指定返回值,返回NONE

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  2. jQuery:ajax处理html页面

    源码: $.ajax({ url: url, success: function (data) { var reg = /<body>[\s\S]*<\/body>/g; ]; ...

  3. cent os下搭建简单的服务器

    作为常和网络打交道的程序员,经常会遇到需要服务器的场合,比如搭建一个web服务器,一个代理服务器,又或者一个小型的游戏服务器. 我时常和朋友一起玩一款叫我的世界的游戏,为了能够长期稳定地联机玩,所以特 ...

  4. ajax用beforeSend自定义请求过程中客户端事件,提高用户体验

    本文为博主原创,未经允许不得转载: 在应用ajax的过程中,当我们再前台提交请求的时候,如果服务端响应事件比较长,就会导致需要等很长时间在前台才能接受到服务端返回的 响应结果,往往会导致用户重复点击按 ...

  5. java面试项目经验:框架及应用

    Java项目经验 Java就是用来做项目的!Java的主要应用领域就是企业级的项目开发!要想从事企业级的项目开发,你必须掌握如下要点:1.掌握项目开发的基本步骤2.具备极强的面向对象的分析与设计技巧3 ...

  6. bootstrap在ie8下,兼容媒体查询

    最近使用bootstrap做网站的时候发现,在ie8下的媒体查询一直失效: 后来解决了,做如下记录: 1.必须运行在服务器下 2.hack 条件语法,如下: <!--[if lte ie 9]& ...

  7. 字符集(编码)转换_Linux

    ZC: 来自 我的项目 czgj 1.代码: #include <stdio.h> #include <iconv.h> #include <string.h> / ...

  8. VC6_导入lib库

    http://www.cnblogs.com/webcyz/p/3525166.html 2. 导入lib库.导入的方法很多方法1) 直接用project>add to project>f ...

  9. 《剑指offer》第十八题(删除链表中重复的结点)

    // 面试题18(二):删除链表中重复的结点 // 题目:在一个排序的链表中,如何删除重复的结点?例如,在图3.4(a)中重复 // 结点被删除之后,链表如图3.4(b)所示. #include &l ...

  10. Codeforces 913C - Party Lemonade

    913C - Party Lemonade 思路:对于第i个话费cost[i],取min(cost[i],2*cost[i-1]),从前往后更新,这样就可以保证第n个的话费的性价比最高,那么从最高位开 ...