python中selenium八大定位方法解析

1.python模拟人,打开浏览器,操做页面,验证系统的功能是否正确()
2.web自动化应用场景:1.冒烟测试(稳定的业务场景,主流程确认系统可用)
2.回归测试(稳定的业务场景,页面改的小)
场景:自动化代码(selenium)》–driver.exe 》浏览器(chrome、IE、火狐)

HTML 元素定位 elements 头部信息(head) 身体 (boby) 标签对

类别不同 有的则不用相对,不用结束 输入框:input

1、引入webdriver

from selenium import webdriver
import time

2、选择一个浏览器类型来打开。

driver = webdriver.Chrome()

# 窗口最大化

driver.maximize_window()

# 3、访问一个网址

driver.get(“http://www.jd.com”) # 1

# 刷新当前页面

driver.refresh()

time.sleep(2)

driver.get(“http://www.zhihu.com”) # 2

time.sleep(2)

# 返回上一页

driver.back() # 1txh

time.sleep(2)

# 前进到下一页面

driver.forward()

# ------------

time.sleep(2)

# 3、关闭当前的浏览器会话。

driver.quit() # 1、chromedriver进程关掉。

2、清空会话数据,关闭浏览器。

1、引入webdriver

from selenium import webdriver
import time

2、选择一个浏览器类型来打开。

driver = webdriver.Chrome()

窗口最大化

driver.maximize_window()

3、访问一个网址

driver.get(“http://www.baidu.com”) # 1

id定位元素。1)查找元素的方法。

ele = driver.find_element_by_id(“kw”)

2) 对元素进行输入操作

ele.send_keys(“csnd”)

time.sleep(5)
driver.quit()

通过name属性来定位 2)

driver.find_element_by_name(“wd”) # 返回只是一个元素。第一个匹配到的元素。

driver.find_elements_by_name(“wd”) # 列表。每一个元素,都是ele

# 标签名称。3)

driver.find_element_by_tag_name(“input”) # 返回只是一个元素。第一个匹配到的元素。

driver.find_elements_by_tag_name(“input”)

# class 4)

driver.find_element_by_class_name(“s_ipt”)

driver.find_elements_by_class_name(“s_ipt”)

#文本定位方法6)

driver.find_element_by_link_text(“更多产品”)

driver.find_element_by_partial_link_text(“产品”)

8种定位方式:
1类:根据元素的单一属性来定位
1)id
2) name, class_name和tag_name
3)link_text和partial_link_text(针对a元素)

2类:组合元素的特征和关系来定位
xpath
绝对定位
相对定位!!-- // 开头、// 标签名[ @ 属性 = 值] // input[ @ id = “kw”]
条件:1、男性 2、170 3、北京 4…

1、元素特征
2、html当中过滤
标签名、属性、文本内容

绝对定位:
/ html / body / div[1] / div[1] / div / div[1] / div / form / span[1] / input
/ 开头 兄弟当中的位 父 / 子 路径顺序

相对定位:
1) // 标签名[ @ 属性 = 值]
// input[ @ id = “kw”] //input[@id=“kw”]

  1. 逻辑运算: and or
    // 标签名[ @ 属性 = 值 and @属性=值]// 标签名[ @ 属性 = 值 or@属性=值]

  2. 文本定位
    // 标签名[text() = 值]

“”"

from selenium import webdriver

from selenium.webdriver.common.by import By

driver = webdriver.Chrome()

driver.get(“https://www.baidu.com/”)

# 查找元素

ele=driver.find_element_by_xpath(‘//div[@id=“u1”]//a[@name=“tj_login”]’)

# ele=driver.find_element_by_link_text(“地图”)

# 元素的点击操作。

ele.click()

from selenium import webdriver

from selenium.webdriver.common.by import By

driver = webdriver.Chrome()

driver.get(“https://www.baidu.com/”)

# 查找元素

ele=driver.find_element(By.XPATH,‘//div[@id=“u1”]//a[@name=“tj_login”]’)

# 元素的点击操作。

ele.click()

“”"
八种定位(八个API或者八个函数)

element:
id find_element_by_id 查找一个元素
class find_element_by_class_name
tag find_element_by_tag_name
name find_element_by_name
link find_element_by_link_text
partial_link find_element_by_partial_link_text

      xpath             find_element_by_xpath
      css_selector      find_element_by_css_selector

底层函数(终极函数)查所有元素
find_element(定位策略(id、name、xpath…),定位表达式)

查找所有匹配的元素
elements:
id find_elements_by_id 返回时一个列表
class find_elements_by_class_name
tag find_elements_by_tag_name
name find_elements_by_name
link find_elements_by_link_text
partial_link find_elements_by_partial_link_text

      xpath             find_elements_by_xpath
      css_selector      find_elements_by_css_selector

当你定位元素,无法直接定位时,可以通过定位子级元素返回父级来获取元素
//div[@id=“u1”]/…/…

id定位: driver.find_element(By.ID,“kw”).send_keys(“南方朱雀”)
name定位: driver.find_element(By.NAME,“wd”).send_keys(“南方朱雀”)
link_text定位 driver.find_element(By.LINK_TEXT,“新闻”).click()
partail_link_text定位 driver.find_element(By.PARTIAL_LINK_TEXT,“新”).click()
xpath定位: 绝对路径:
/开头是绝对路径 /html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input
相对路径://开头是相对路径 //input
1.相对路径+索引定位: //form/span[1]/input
2.相对路径+属性定位: //input[@autocomplete=‘off’]
3.相对路径+通配符定位*: //[@autocomplete=‘off’] //[@=‘off’] 复制xpath经常会出错,不是万能的
4.相对路径+部分属性值定位: 以开头://
[starts-with(@autocomplete,‘of’)] 以结尾://[substring(@autocomplete,2)=‘ff’] 包含://[contains(@autocomplete,‘of’)]
5.相对路径+文本定位 //span[text()=‘按图片搜索’]

find_elements(定位策略(id、name、xpath…),定位表达式)

“”"

from selenium import webdriver

from selenium.webdriver.common.by import By

driver = webdriver.Chrome()

driver.get(“https://www.baidu.com/”)

# 查找元素

eles =driver.find_elements(By.XPATH,‘//div[@id=“u1”]//a[@name=“tj_login”]’)#得到一个列表,列表就一个值

# 元素的点击操作。

eles [0].click() #列表中第一个元素点击

“”"
1、点击 click
2.输入操作 send_keys
3.获取元素文本内容
4.获取元素的属性
“”"
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()

driver.get(“https://www.baidu.com/”)

查找元素

driver.find_element_by_id(“kw”).send_keys(“孟晚舟”)
#点击 百度一下
driver.find_element_by_id(“su”).click()

python 头部注释的作用
头注释并不是为代码而服务,更多是被系统或解释器所调用
会告诉系统 Python 解释器在哪,脚本编码格式是啥
#!usr/bin/env python

-- coding:utf-8 _-

print(“hello-world”)

document对象:
a=document.getElementById(“kw”)

a.readOnly
false
a.readOnly=true
true
b= document.getElementById(“su”)

b.disabled
false
b.disabled
false

$x(‘//input[@placeholder=“请输入标题”]’)[0].outerHTML=" " # 元素不可见

if name == ‘main’: # main方法是一个入口,不论多少代码,会先运行面此方法
unittest.main()

你可能感兴趣的:(selenium,chrome,测试工具)