selenium 基础之定位方式
selenium 基础 18种定位方式 *****
18种定位 复数8种 单数8种 底层2种
# api讲解 **
工作中需要可以查资料。
# xpath怎么写 ****
Xpath是xml路径语言是通过元素路径来查找这个标签的元素。
(如在火狐浏览器中,右键firebug查看元素中的firepath中查找尝试)
//* 代表获取全部元素
//*[@id='i1'] @代表标签的属性(引号单双都可)
//*[@placeholder='请通过ID定位元素']
//input 获取全部input标签元素
//input[@id='i1'] 比//*快
//div[@class='inner']
// div[@ class ='inner'][1] 当出现重复时可以使用下标 角标从1开始
// div[@ class ='driver'][1] / div[@ class ='inner'][1] 通过找到父级唯一 在向下继续查找
//*[@type='text' and @id='i1'] 通过逻辑语言定位 and并列多个条件
在取属性定位时 要选择唯一属性进行定位
# css selector 怎么写 *****
实际是HTML的css选择器的标签定位。(firebug中将xpath改为css)
id定位 通过 #i1
class定位 .inner
css selector ####定位方式不支持角标定位
input 标签选择器 定位到html种所有的input标签
div.inner 通过先定位到div标签 在在div标签中查找class 为inner
<div class='inner active'></div> #多个active的css样式
.inner.active 通过多个class定位
input#i1 先定位到input 标签 在input标签中查找id为i1
div.driver>div>input 大于号代表递进一层
[id='i1'] 属性定位 这里的属性可以为标签中任意属性
input[id='i1'] 先定位input 在定位id为i1
[type='text'][id='i1'] 多种属性定位
[placeholder^='请输入'] 以什么开头
[placeholder$='元素'] 以什么为结尾
[placeholder*='ID'] 包含
# PO思想 pageobj 针对ui自动化难以维护的处理思想*****
# case 与原始数据相分离 也是解耦 这是自动化的思想
# 等待方式:显示等待 time.sleep() 隐士等待
'''
# 导入
from selenium import webdriver
# 实例化浏览器 启动浏览器
driver = webdriver.Chrome()
# service client 经典模型(原理) 代码相当于客户端 浏览器相当于服务端 通过http请求,sessionid创建一个通道,传递值。
# 以HTTP协议发送请求
driver.get('http://ui.imdsx.cn/uitester/')
# id定位
# el = driver.find_element_by_id('i1') ###通过id定位元素
# el.send_keys('xxxxx')
# class 定位
# el = driver.find_element_by_class_name('classname')
# el.send_keys('xxx')
# css selector 定位
# el = driver.find_element_by_css_selector('#i1')
# el.send_keys('xxxxxx')
# name 定位 标签中的name属性定位
# el = driver.find_element_by_name('name')
# el.send_keys('xxxxx')
# link_text a标签文本内容
# el = driver.find_element_by_link_text('跳转大师兄博客地址')
# el.click()
# link_text_pxxxxx 模糊linktext匹配
# 跳转到最上面
import time
time.sleep(1)
driver.execute_script('window.scrollTo(0,0);') ###执行js 移动滚动轴到最上面
time.sleep(1)
# el = driver.find_element_by_partial_link_text('跳转大师兄') ###模糊匹配
# el.click()
# xpath 定位
# el = driver.find_element_by_xpath("//input[@placeholder='请通过XPATH定位元素']")
# el.send_keys('xxxxxx')
# tag_name 标签
# el = driver.find_element_by_tag_name('input')
# el.send_keys('xxxxxxxxxx')
# 复数也是8种
# 复数形式 返回的是一个列表 只要满足定位要求的都会返回 (作业:回家试一下全部的复数形式)
# els = driver.find_elements_by_class_name('classname')
# els[0].send_keys('xxxxxx')
# 单数8种 复数8种 最后两种是前面16种的底层封装
# #######工作中用find css selector##########(只有需要取角标的使用xpath 它为xml语言需要转化html而css就可被html直接解析)
# driver.find_elements_by_class_name()