定位方式取舍
# 唯一定位方式、多属性定位、层级+角标定位(离目标元素越近,相对定位越好) # 推荐用css selector(很少用递进层次的定位)
# 什么时候用xpath呢? 当你定位元素时,必须要用角标定位才可以确立唯一时,可以选用xpath
selenium提供种定位方式,其中包含种单数种复数种父类写法

获取标签元素的8种单数方式如下:

(element是单数,elements是复数)

from selenium import webdriver
import time driver = webdriver.Chrome()
driver.get('http://ui.imdsx.cn/uitester') # 最大化窗口
driver.maximize_window() # 将屏幕滚动定位到最上方
js = 'window.scrollTo(0,0);'
driver.execute_script(js) # 停顿2秒后再进行操作
time.sleep(2) ##################################### # 通过ID定位目标元素
driver.find_element_by_id('i1') # 通过className定位目标元素
driver.find_element_by_class_name('c1') # 通过name属性定位目标元素
driver.find_element_by_name('n1') # 通过Xpath定位目标元素
driver.find_element_by_xpath('//*[@id="i1"]').send_keys('这是在输入框内输入的文本信息') # 通过css Selector定位目标元素
element=driver.find_element_by_css_selector('input[placeholder="请通过CSS SELECTOR定位元素"]')
element.send_keys('') # 通过标签名称定位(注:在一个页面中,标签一定会重复,所以不用这个来进行定位)
# 默认写在多个相同标签的第一个里面
driver.find_element_by_tag_name('input').send_keys('') # 通过标签中的文本查找元素
driver.find_element_by_link_text('跳转大师兄博客地址').click() # 通过标签中文本的模糊匹配查找
driver.find_element_by_partial_link_text('大师兄').click()
# 单数的父类,是上面8种单数方式的底层封装。参数化的一种调用方式而已。
driver.find_element()

获取标签元素的复数方式和单数方式是一一对应的,由于复数形式,返回的是list,使用不方便,不知道要取哪个值,所以实际运用中并不常用

举一个例子:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('http://ui.imdsx.cn/html') js = 'window.scrollTo(0,1800);'
driver.execute_script(js) elements = driver.find_elements_by_css_selector('select')
print(elements)

输出结果如下:

[<selenium.webdriver.remote.webelement.WebElement (session="f4e11718e43e6bd3415e10c0e43998e0", element="0.9816753200516803-1")>, <selenium.webdriver.remote.webelement.WebElement (session="f4e11718e43e6bd3415e10c0e43998e0", element="0.9816753200516803-2")>, <selenium.webdriver.remote.webelement.WebElement (session="f4e11718e43e6bd3415e10c0e43998e0", element="0.9816753200516803-3")>, <selenium.webdriver.remote.webelement.WebElement (session="f4e11718e43e6bd3415e10c0e43998e0", element="0.9816753200516803-4")>]
 


selenium定位方式-获取标签元素:find_element_by_xxx的更多相关文章

  1. 了解 Selenium 定位方式

    ※元素定位的重要性:在于查找元素 And 执行元素 定位元素的三种方法 1.定位单个元素:在定位单个元素时,selenium-webdriver 提示了如下一些方法对元素进行定位.在这些定位方式中,优 ...

  2. Selenium定位不到指定元素原因之iframe(unable to locate element)

    浏览过程中,图片中的内容可能太小,无法看清,可以>右键>在新标签中打开 Outline 项目原因,需要用selenium实现模拟登陆.模拟上传文件,自然就需要模拟点击[上传]按钮: 模拟点 ...

  3. selenium 定位方式

    在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素.其中By类的常用定位方式共八种,现分别介绍如下 ...

  4. selenium定位方式-Xpath使用方法

    什么是Xpath? XPath是XML的路径语言,通俗一点讲就是通过元素的路径来查找到这个标签元素. 一. 在火狐浏览器上安装Xpath 方法如下: 1.使用 Firefox 访问 https://a ...

  5. Selenium定位二 --多个元素定位方法 和层级定位方法

    定位多个元素: findElements()方法可以返回一个符合条件的元素List 组 如: public void hitUpdatePersonnel(WebDriver driver, int ...

  6. python版本selenium定位方式(不止八种哦)

    除了大家熟知的8种定位方式之外 1.id定位:find_element_by_id(self, id_)2.name定位:find_element_by_name(self, name)3.class ...

  7. 使用selenium的方式获取网页中图片的链接和网页的链接,来判断是否是死链(二)

    上一篇使用Java正则表达式来判断和获取图片的链接以及跳转的网址,这篇使用selenium的自带的API(getAttribute)来获取网页中指定的内容 实现内容:获取下面所有图片的链接地址以及跳转 ...

  8. js点击获取标签元素

     14.数组去重 方法一:利用冒泡 function elementName(evt){ evt = evt|| window.event; // IE: window.event // IE用src ...

  9. selenium定位方式源码的存放位置

    find_element方法源码存在位置 by定位方法

随机推荐

  1. MySQL存储引擎InnoDB与MyISAM的区别

    一.比较 事务:InnoDB是事务型的,可以使用Commit和Rollback语句. 并发:MyISAM只支持表级锁,InnoDB还支持行级锁. 外键:InnoDB支持外键. 备份:InnoDB支持在 ...

  2. springmvc源码分析——入门看springmvc的加载过程

    本文将分析springmvc是如何在容器启动的时候将各个模块加载完成容器的创建的. 我知道在web.xml文件中我们是这样配置springmvc的: 可以看到,springmvc的核心控制器就是Dis ...

  3. 系统运行缓慢,CPU 100%,以及Full GC次数过多问题的排查思路

    前言 处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题.当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警. 本文主要针对系统运 ...

  4. 5年后,我们为什么要从 Entity Framework 转到 Dapper 工具?

    前言 时间退回到 2009-09-26,为了演示开源项目 FineUI 的使用方法,我们发布了 AppBox(通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块),最初的 ...

  5. 【alpha阶段】第九次Scrum Meeting

    每日任务内容 队员 昨日完成任务 明日要完成的任务 牛宇航 #26 评价总览接口编写https://github.com/rRetr0Git/rateMyCourse/issues/26 #26 评价 ...

  6. nextInt()和nextLine()一起使用时的注意点

    问题原因:nextLine()会把nextInt(),next(),nextDouble(),nextFloat()的结束换行符作为字符串读入,进而不需要从键盘输入字符串nextLine便已经转向了下 ...

  7. python中可变与不可变类型变量中一些较难理解的地方

    当函数内部引用一个全局变量时,如果此全局变量为可变类型,那么函数内部是可以改变此全局变量的值,用不用globale申明全局变量都一样.但是如果想给此变量重新赋值则必须要使用global. l = [] ...

  8. 利用控制台承载SignalR作为服务端、及第三方推送信息

    一 首先建立一个控制台需要引用一些组件 特别要注意引用Microsoft.Owin.Host.HttpListener别忘了这个组件,不引用他可能程序正常运行不会报错,但服务器一直开启失败(我之前就是 ...

  9. python之路8-内置模块介绍

    time & datetime模块 1 #_*_coding:utf-8_*_ 2 __author__ = 'Alex Li' 3 4 import time 5 6 7 # print(t ...

  10. 初学tensorflow遇到的Error——UnrecognizedFlagError: Unknown command line flag 'f'

    最近在学习<tensorflow实战>时需要下载cifar10数据集,在cifar10目录下用到命令: import cifar10,cifar10_inputcifar10.maybe_ ...