selenium的帮助文档: https://selenium-python.readthedocs.io/api.html#module-selenium.common.exceptions

目前支持的WebDriver实现有Firefox、Chrome、IE和Remote

selenium元素定位

seleniun中的八种定位方式

id:通过元素id进行定位,格式:find_element_by_id()

name:通过元素的name进行定位,格式:find_element_by_name()

class name:通过元素的属性名进行定位,格式:find_element_by_class_name()

tag name:通过元素的标签名进行定位,格式:find_element_by_tag_name()

link text:通过元素的完整的链接文本的内容进行定位,格式:find_element_by_link_text()

partial link text:通过元素的部分的链接文本的内容进行定位,格式:find_element_partial_link_text()

xpath:通过xpath选择器进行定位,格式:find_element_by_xpath()

css selector:通过css选择器进行定位,格式:find_element_by_css_selector()

css_selector定位详解

driver.find_element_by_css_selector()

css定位可以分为四类:id、class、其他属性、路径。

1 #id方式

两种方式,可以在前面加上tag名称,也可以不加

driver.find_element_by_css_selector(‘#id_value’)

driver.find_element_by_css_selector(‘tag_name#id_value’)

例:

from selenium import webdriver
import time driver=webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(8)
driver.get('https://www.baidu.com')
driver.find_element_by_css_selector('#kw').send_keys('css选择器')#通过css选择器中的id进行定位
driver.find_element_by_css_selector('input#su').click()#通过css选择器中的标签名+id进行定位

2 .class方式

两种方式,前面加上tag名称,也可以不加。如果不加tag名称时,点不能省略。

driver.find_element_by_css_selector(‘.class_value’)

driver.find_element_by_css_selector(‘tag_name.class_value’)

有的class_value比较长,而且中间有空格时,不能把空格原样写进去,那样不能识别。这时,空格用点代替,前面要加上tag_name。

如:driver.find_element_by_css_selector('div.panel.panel-email').click()

例:

from selenium import webdriver
import time driver=webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(8)
driver.get('https://www.baidu.com')
driver.find_element_by_css_selector('.s_ipt').send_keys('css选择器')#通过css选择器中的class进行定位
driver.find_element_by_css_selector('input.bg.s_btn').click()#通过css选择器中的标签名+class进行定位

3其他属性方式

两种方式,可以在前面加上tag名称,也可以不加。

driver.find_element_by_css_selector(“[attri_name=’attri_value’]”)

driver.find_element_by_css_selector("input[type='password']").send_keys('我要自學網')

driver.find_element_by_css_selector("[type='password']").send_keys('我要自學網')

from selenium import webdriver
import time driver=webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(8)
driver.get('https://www.baidu.com')
driver.find_element_by_css_selector("[name='wd']").send_keys('css选择器')#通过css选择器中用键值对的方式进行定位
driver.find_element_by_css_selector("input[type='submit']").click()#通过css选择器中的标签名+键值对进行定位

4路径法

两种方式,可以在前面加上tag名称,也可以不加。注意它的层级关系使用大于号“>”。

driver.find_element_by_css_selector("form#loginForm>ul>input[type='password']").send_keys('111222333')

 Xpath定位

Xpath定位实例

下面是一段HTML代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>xpath定位元素练习</title>
</head>
<body>
<form>
用户名:
<input type="name" name="username" id=1>
<br />
密码:
<input type="password" name="password" id=2>
</form>
<p>
age:
<input type="text" name="age">
</p>
</body>
</html>
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys#引入Keys方法包,用于键盘操作 driver=webdriver.Firefox()
driver.maximize_window()
#进入HTML页面,“r"是对输入内容中的反斜杠进行转移
driver.get(r"http://127.0.0.1:8848/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E5%AD%A6%E4%B9%A0/1.html")
#通过绝对路径进行查找
driver.find_element_by_xpath("/html/body/form/input").send_keys("selenium")
time.sleep(2)
#通过绝对路径进行查找
driver.find_element_by_xpath('/html/body/form/input[@name="username"]').clear()
time.sleep(2)
#通过相对路径进行查找
driver.find_element_by_xpath('//body/form/input[2]').send_keys("")
time.sleep(2)
#通过相对路径进行查找
driver.find_element_by_xpath('//body/form/input[2][@type="password"]').clear()
time.sleep(2)
driver.find_element_by_xpath('//p/input').send_keys(20)
time.sleep(2) driver.quit()

from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys#引入Keys方法包,用于键盘操作 driver=webdriver.Firefox()
driver.maximize_window()
#进入HTML页面,“r"是对输入内容中的反斜杠进行转移
driver.get(r"http://127.0.0.1:8848/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E5%AD%A6%E4%B9%A0/1.html")
#通过绝对路径进行查找
driver.find_element_by_xpath("/html/body/form/input").send_keys("selenium")
time.sleep(2)
#通过绝对路径进行查找
driver.find_element_by_xpath('/html/body/form/input[@name="username"]').clear()
time.sleep(2)
#通过相对路径进行查找
driver.find_element_by_xpath('//body/form/input[2]').send_keys("")
time.sleep(2)
#通过相对路径进行查找
driver.find_element_by_xpath('//body/form/input[2][@type="password"]').clear()
time.sleep(2)
driver.find_element_by_xpath('//p/input').send_keys(20)
time.sleep(2)
#利用//form/input的父节点进行查找
driver.find_element_by_xpath('//form/input/../input').send_keys('利用父节点进行查找')
time.sleep(2)
#通过相对路径和元素属性的方式进行查找
driver.find_element_by_xpath('//input[@id=2]').send_keys('')#查找所有input标签中id为2的标签
time.sleep(2)
#‘//*’即遍历所有的元素
#查找两个包含input标签的元素的父元素,然后查找里面的第一个input标签
driver.find_element_by_xpath('//*[count(input)=2]/input[1]').send_keys('')
time.sleep(2) driver.quit()

selenium基础(元素定位)的更多相关文章

  1. 『心善渊』Selenium3.0基础 — 4、Selenium基础元素定位详解

    目录 1.什么是元素定位 2.Selenium元素定位常用API (1)By_id 定位 (2)by_name 定位 (3)by_class_name 定位 (4)by_tag_name 定位 (5) ...

  2. 【基础】selenium中元素定位的常用方法(三)

    一.Selenium中元素定位共有八种 id name className tagName linkText partialLinkText xpath cssSelector 其中前六种都比较简单, ...

  3. selenium界面元素定位

    一.        Selenium界面元素定位 本文元素定位以das2为例 #导入包 from selenium import  webdriver #打开火狐驱动 driver=webdriver ...

  4. [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)

    转载地址:[python爬虫] Selenium常见元素定位方法和操作的学习介绍 一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locat ...

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

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

  6. Selenium Web元素定位方法

    Selenium是用于Web应用测试的自动化测试框架,可以实现跨浏览器和跨平台的Web自动化测试.Selenium通过使用WebDriver API来控制web浏览器,每个浏览器都都有一个特定的Web ...

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

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

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

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

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

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

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

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

随机推荐

  1. Dart编程判断

    条件/决策构造在执行指令之前评估条件. 下表是Dart中的条件语句 序号 声明和说明 1 if 语句 一个if语句由一个布尔表达式后跟一个或多个语句. 2 If...Else 语句 一个if可以跟一个 ...

  2. 一张图看懂阿里云网络产品【十五】IPv6 解决方案

    摘要: 作为国内首家全面支持IPv6的云厂商,阿里云12月再次推出全栈IPv6解决方案,核心产品已全面支持,协助客户小时/天级即可完成IPv6 访问.方案成功历经优酷.淘宝.天猫.双十一考验.SLB ...

  3. bzoj1070题解

    [解题思路] 考虑拆点,得到一个二分图:左边点<i,j>表示第i个技师按顺序第j辆修的车,右边点k表示第k个车主,连接左右的边表示第k个车主可能成为第i个技师的第j个客户. 因为是二分图, ...

  4. python 远程执行命令

    1.简单版 # coding: utf-8 import paramiko import re from time import sleep def ssh(): ssh = paramiko.SSH ...

  5. [JZOJ 100025] 棋盘

    题意:求剩余面积. 首先吐槽题号:究竟\(JZOJ\)有多少未公开的题目... 思路: 简单的一批啊... 不知道为啥上午不过下午就过了?? 难道是海螺姑娘光顾我?? 多说了都是灵异故事... 其实就 ...

  6. 用python写的自动转发邮件信息模板

    # -*- coding:utf-8 -*- #加密东西 def decrypt(key, s): c = bytearray(str(s).encode("gbk")) n = ...

  7. JMeter安装和环境变量搭建

    下载安装Java JDK环境,设置环境变量 elasticsearch for windows:https://www.cnblogs.com/Neeo/articles/10368280.html ...

  8. USACO2012 Broken necklace /// DP oj10103

    题目大意: 项链最长的纯色连续段,“w”即white白色珠子,可任意涂为红或蓝,“r” “b”即红 蓝. Input Line 1:  N, the number of beads Line 2:   ...

  9. 一个好的mvc5+ef6的学习地址

    链接地址: MVC5 + EF6 入门完整教程  感谢这位博主的无私奉献 文章目录列表:http://www.cnblogs.com/miro/p/3777960.html#3673688

  10. 深度探索C++对象模型之第二章:构造函数语意学之Default constructor的构造操作

    C++新手一般由两个常见的误解: 如果任何class没有定义默认构造函数(default constructor),编译器就会合成一个来. 编译器合成的的default constructor会显示的 ...