一点一点学习selenium

前言


做Web UI自动化,页面元素定位是最基本的要求,也在这做个整理,通过对元素定位的学习对HTML/CSS学习一点基本知识。

说明


(1). xxx为元素名字
(2). 元素获取方式采用的是selenium3 + python


页面元素定位方法如下:

1、 id:WebElement的id属性
<!--html示例-->  #百度首页
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
driver.find_element_by_id('xxx') 
'''查找id为xxx的元素'''
2、name:WebElement的name属性
<!--html示例-->  #百度首页
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off"
driver.find_element_by_name('xxx')
'''找到第一个匹配上的元素;如无,则会报错'''
driver.find_elements_by_name('xxx')
'''返回所有匹配上的元素,添加进一个list中;如无,返回空list'''
3、class:WebElement的class属性
<!--html示例-->  #百度首页
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off"
driver.find_element_by_class_name('xxx')
'''找到第一个匹配上的元素;如无,则会报错'''
driver.find_elements_by_class_name('xxx')
'''返回所有匹配上的元素,添加进一个list中;如无,返回空list'''
4、tag:WebElement的tag属性

tag: <iframe src=...></iframe> iframe就是tag名 尖括号内的都是tag名

driver.find_element_by_tag_name('xxx')
'''找到第一个匹配上的元素;如无,则会报错'''
driver.find_elements_by_tag_name('xxx')
'''返回所有匹配上的元素,添加进一个list中;如无,返回空list'''
5、link_text(全匹配)
<!--html示例-->  #百度首页
<a href="http://news.baidu.com" name="tj_trnews" class="mnav">新闻</a>
driver.find_elements_by_link_text('新闻')
6、 partial_link_text(部分匹配)
<!--html示例-->  #百度首页
<a href="http://news.baidu.com" name="tj_trnews" class="mnav">新闻</a>
driver.find_elements_by_link_text('新')

selenium等待元素三种方式

选择元素时

代码设定一个最大等待时长
周期性重新寻找该元素,知道该元素找到返回
或者超出指定的最大等待时长(返回空列表或者抛出异常)

1、隐式等待:

全局的设定
implicitly_wait()

2、显式等待 —— 为一个操作专门制定等待时间
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC #expected_conditions条件判断
from selenium.webdriver.common.by import By

ele = WebDriverWait(driver,60).until(EC.presence_of_element_located(By.ID,'xxx'))
'''判断某个元素是否被加到了dom树里,并不代表该元素一定可见,如果定位到就返回webelement'''
3、强制等待

import time
time.sleep()


iframe的处理

1、什么是frame和iframe:

www.w3school.com.cn/html/html_frames.asp

2、frame切换
2.1 切换进frame里:
driver.switch_to.frame(id/name)
2.2 切换回主html:
driver.switch_to.default_content()
2.3 多个frame切换:

driver.find_elements_by_tag_name(frame)[index]


css元素选择器 —— 执行效率高

div {color:red;font-size:20}
div : 选择器
{..}:声明 (attribute-values)

选择元素方法 tag/class/ID
1.根据tag名
‘tag’
2.根据ID
‘#ID’
3.根据class
‘.classname’

后代选择器
语法:
s1 s2
选择s1 元素里面 所有s2元素
可以是直接子节点,也可以不是

http://chromedriver.storage.googleapis.com/index.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值