一、六种定位方式

1.id

2.name

3.class name

4.tag name:定位标签

5.link text:定位一个链接,如果是中文,需要在代码文最前面加一句I话|:#coding=utf-8,同时还需要在中文前面加u,将中文转换为unicode,解码为utf-8,即可识别中文的文字

6.partial link text:定位链接,同时通过中文中的部分中文找到该元素

7.xpath(最常用)

8.css selector(最常用)

二、火狐浏览器

1.下载firebug(可以在浏览器添加插件种搜索安装),点击小虫子也可以打开前端调试页面。

【实例】以百度网页为例:http://www.baidu.com

<input id="kw" class="s_ipt" name="wd" value="" maxlength="255" autocomplete="off">
1)简单定位百度输入框

find_element_by_id("kw1")

find_element_by_name("wd")

find_element_by_class_name("s_ipt")

find_element_by_tag_name("input")

1)较复杂定位百度输入框

a.xpath

find_element_by_xpath("/html/body/div[2]/div[1]/div/div[1]/div/form/span[1]/input").send_keys("selenium")  //xpath中的内容可以通过火狐浏览器定位该元素右键选择“复制xpath”即可得到。其中dev[2]代表body下的第二个dev标签。

xpath中也可以写成相对路径,可以通过下图来编写判定其相对路径为:find_element_by_xpath("//form[@id='form']/span/input").send_keys("selenium")

find_element_by_xpath("//form[@id='form' and@name='f']/span/input").send_keys("selenium")

b.css_selector

browser.find_element_by_css_selector("#form>span>input").send_keys("selenium")
xpath同css之间相互之间有转换关系,详情看下图:
练习中的举例:
driver.find_element_by_xpath("//a[@fav-url='http://t10.baidu.com/it/u=42051159,1359918120&fm=58'and @class='cute sasa de mimi,momo'] ").click()
a标签下的fav-url属性和class属性共同确定一个元素。

c.弹出框中元素定位:

#定位“提交所有答案并结束”按钮,定位语句如下:
driver.find_element_by_css_selector("body>div>div>div>div>div>div>input:nth-child(1)").click()
查找一共有六个div才能定位到input的“提交所有答案并结束”按钮后可以通过console去验证是否真正通过以上路径能够定位到“提交所有答案并结束”按钮。如果能证明语句是正确的。

 

2)定位新闻

find_element_by_link_text(u"新闻")   //需要在代码文最前面加一句I话|:#coding=utf-8

find_element_by_partial_link_text("胡")

3)获取某个 元素的value值方法;

比如定位元素是find_element_by_css_selector("div>span");那么获取值就是find_element_by_css_selector("div>span").value

【虫师Python】第二讲:元素定位的更多相关文章

  1. python+selenium遇到元素定位不到的问题,顺便记录一下自己这次的错误(报错selenium.common.exceptions.NoSuchElementException)

    今天在写selenium一个发送邮件脚本时,遇到一些没有找到页面元素的错误.经过自己反复调试,找原因百度,终于解决了.简单总结一下吧,原因有以下几点: 一:Frame控件嵌套,.Frame/Ifram ...

  2. selenium+python自动化之元素定位

    自动化按步骤拆分的话,可以分为四步操作:定位元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇接下来讲基本的八种元素定位方法.说的通俗一点,就是教大家找对象. ...

  3. Appium Python 五:元素定位

    总结 单个元素定位: driver.find_element_by_accessibility_id(id) driver.find_element_by_android_uiautomator(ui ...

  4. 3 Python+Selenium的元素定位方法(id、class name、name、tag name)

    [环境] Python3.6+selenium3.0.2+IE11+Win7 [定位方法] 1.通过ID定位 方法:find_element_by_id('xx') 2.通过name定位 方法:fin ...

  5. Python自动化学习--元素定位

    from selenium import webdriver import time driver = webdriver.Chrome() driver.get("https://www. ...

  6. Appium+python自动化12-appium元素定位

    前言 appium定位app上的元素,可以通过id,name.class这些属性定位到 一.id定位 1.appium的id属性也就是通过UI Automator工具查看的resource-id属性

  7. Selenium with Python 003 - 页面元素定位

    WebUI自动化,首先需要定位页面中待操作的元素,然后进行各种事件操作,这里我们首先介绍Selenium Python 如何定位页面元素,WebDriver 提供了一系列的方法. 定位单个页面元素(返 ...

  8. python之selenium元素定位方法

    前提: 大家好,今天我们来学习一下selenium,今天主要讲解selenium定位元素的方法,希望对大家有所帮助! 内容: 一,selenium定位元素 selenium提供了8种方法: 1.id ...

  9. Appium+python自动化12-appium元素定位【转载】

    前言 appium定位app上的元素,可以通过id,name.class这些属性定位到 一.id定位 1.appium的id属性也就是通过UI Automator工具查看的resource-id属性

  10. 【Python】Selenium元素定位错误之解决办法

    当使用class定位元素时发现报错: 错误信息:selenium.common.exceptions.InvalidSelectorException: Message: Compound class ...

随机推荐

  1. 《转载》脚本实现从客户端服务端HTTP请求快速分析

    本文转载自https://www.imooc.com/article/14107 首先我想介绍下,分享这个脚本的用处: 当客户告知我们,一个页面http://www.xxx.com 有问题时,作为PE ...

  2. Qt封装百度人脸识别+图像识别

    AI技术的发展在最近几年如火如荼,工资待遇也是水涨船高,应用的前景也是非常广阔,去年火起来的人脸识别,今年全国遍地开花,之前封装了下face++的人脸识别等接口,今年看了下百度的AI,还免费了,效果也 ...

  3. jQuery的回调管理机制

    // 对option的一个缓存,避免每次都需要createOptions,option是创建Callback对象时的传入的参数// 每个option被存入optionsCache中类似于{memory ...

  4. 异构GoldenGate 12c 双向复制配置

    1.配置window,添加checkpoint表(本文windows和linux互为source和target) GGSCI (WIN-GM5PVS1CILH) 1> view param ./ ...

  5. Spark学习笔记--Spark在Windows下的环境搭建

    本文主要是讲解Spark在Windows环境是如何搭建的 一.JDK的安装 1.1 下载JDK 首先需要安装JDK,并且将环境变量配置好,如果已经安装了的老司机可以忽略.JDK(全称是JavaTM P ...

  6. LeetCode 13 Roman to Integer(罗马数字转为整数)

    题目链接 https://leetcode.com/problems/roman-to-integer/?tab=Description   int toNumber(char ch) { switc ...

  7. apache两种工作模式详解

    prefork模式 这个多路处理模块(MPM)实现了一个非线程型的.预派生的web服务器,它的工作方式类似于Apache 1.3.它适合于没有线程安全库,需要避免线程兼容性问题的系统.它是要求将每个请 ...

  8. 【转】详解抓取网站,模拟登陆,抓取动态网页的原理和实现(Python,C#等)

    转自:http://www.crifan.com/files/doc/docbook/web_scrape_emulate_login/release/html/web_scrape_emulate_ ...

  9. Android studio was unable to create a local connection in order...

    以管理员身份运行cmd 输入netsh winsock reset 重启电脑

  10. dubbo入门之微服务客户端服务端配置

    正常一个服务不会只做客户端或者只做服务端,一般的微服务都是服务与服务相互调用,那么,应该怎么配置呢?接着之前的dubbo入门之helloWorld,我们再改改配置,即可实现正常的微服务架构.与之前相比 ...