Selenium
selenium基本操作
selenium基本操作: 刷新,前进,后退,获取窗口大小,设置窗口大小,切换窗口,关闭,退出
简单是登录的数据驱动
元素定位: 对于web自动化来说,就是操作页面上各种元素,在操作元素之前,找到元素,定位元素
目的: 找到某个页面上唯一的元素
常用有8中定位元素的方法:
通常来说 id是唯一的,也是最稳定的,有id,首选用id来定位的;当然有时候页面上的元素是动态变化的,所以会采用其他元素
id: browser.find_element_by_id(self,id)
name: browser.find_element_by_name(self,name)
class_name: browser.find_element_by_class_name(self,name)
tag_name: browser.find_element_by_tag_name(self,name)
link_text: browser.find_elements_by_link_text(self,link_text)
partial_link_text:browser.find_element_by_partial_link_text(self,link_text)
css_selector: browser.find_elements_by_css_selector(self,classname)
xpath: browser.find_element_by_xpath(self,xpath)
特殊元素:
svg(可伸缩矢量图形)、frame
name='svg' ://*[name()='svg']
绝对路径定位:
优点:快速定位
缺点:当页面父级元素发生改变,也会导致xpath发生
相对路径定位:
优点:长度和标签开始的位置不受限制,灵活,而且稳定,万能
符号 | 含义 | 格式 |
---|---|---|
/… | 表示找上级 | //*[@name=‘password’]/…/…/p[2]/input |
/ | 表示找下级 | / |
@ | 表示根据元素的属性定位 | / |
text(): | 文本值 | //*[text()=‘练习鼠标拖拽’] |
* | 任意的标签名 | //*[@placeholder=‘密码’] |
contains | 模糊查找 | //*[contains(@什么属性,‘属性值’)] |
starts-with | 以什么开始 | //*[starts-with(@class,‘success’)] |
登录实例:
from selenium.webdriver.common.keys import Keys
browser.find_element_by_link_text('登录').click() #点击 “登录按钮”
browser.find_element_by_xpath('//input[@name="username"]').send_keys('123456789') #输入密码
import time
time.sleep(2)
browser.find_element_by_xpath('//input[@name="username"]').send_keys(Keys.TAB) #按下键盘TAB
time.sleep(2)
browser.find_element_by_xpath('//input[@name="password"]').send_keys('123456') #输入密码
time.sleep(2)
browser.find_element_by_xpath('//input[@name="password"]').send_keys(Keys.ENTER)#按下键盘enter