如果把写用例当做是手工测试,那么UI级自动化就是将手工测试变成计算器自动执行的测试
将手工的顺序变成自动运行。手工测试如果就是点点点,那么只要找到元素,我们操作即可
元素的定位分很多,常用的如:id name class 对应的by.id by.name by.classname
这是标签执行就能看到的内容
例如
driver = webdriver.Firefox(executable_path="d:\\geckodriver")
driver.get("http://www.baidu.com")
driver.find_element_by_id("'kw").send_keys("1")
driver.find_element_by_name("wd").send_keys("2")
driver.find_element_by_class_name("s_ipt").send_keys("3")
还有常用的就是通过标签的路径进行定位,常用的路径定位就是xpath
浏览器的很多插件都可以提供xpath和css定位的方式 比如 常见的 firepath 和WebDriver Element Locator 等等。那么相对路径在运行时不能找到也可以使用绝对路径。但是 下面要说的还是自行编写:
#如果不想制定标签名称,可以用*号表示任意标签
#有id的值的时候
driver = webdriver.Firefox(executable_path="d:\\geckodriver")
driver.get("http://www.baidu.com")
driver.find_element_by_xpath("//*[@id='kw']").send_keys("1")
#有name的值的时候
driver.find_element_by_xpath("//*[@name='wd']").send_keys("2")
#有class的值的时候
driver.find_element_by_xpath("//*[@class='s_ipt']").send_keys("3")
#任意唯一属性的值的时候
driver.find_element_by_xpath("//*[@autocomplete='off']").send_keys("4")#任意唯一属性的值的时候
ren = driver.find_element_by_xpath("//*[@autocomplete='off']")
#如果想制定具体某个标签,就可以直接写标签名称
#百度html
driver.find_element_by_xpath("//input[@name='wd']").send_keys("5")
#如果属性不明显,我们可以按照路径定位到他的上一层,xpath称为父元素,之后通过父元素在定位
#例如:这里的例子失败了。。。。。
driver.find_element_by_xpath("//span[@class='bg s_ipt_wr quickdelete-wrap']/input").send_keys("6")
#如果父元素定位不到,那么可以从父元素的父元素来定位,上上层,听说父亲的父亲是爷爷
driver.find_element_by_xpath("//form[@id='form']/span/input").send_keys("7")
#同级N多相同,父元素就一个,子元素太多,可以按照出生来取名老大就是1,老二就是2.。。。
driver.find_element_by_xpath("//select[@name='ss']/option[1]").click()
driver.find_element_by_xpath("//select[@name='ss']/option[2]").click()
driver.find_element_by_xpath("//select[@name='ss']/option[3]").click()
关于逻辑运算定位and\or\not
and用的多一些 同时满足多个条件下的定位
例如
driver = webdriver.Firefox(executable_path="d:\\geckodriver")
driver.get("http://www.baidu.com")
driver.find_element_by_xpath("//*[@id='kw' and @autocomplete='off']").send_keys("1")
关于模糊匹配
driver = webdriver.Firefox(executable_path="d:\\geckodriver")
driver.get("http://www.baidu.com")
#模糊匹配某个属性
driver.find_element_by_xpath("//*[contains(@id,'kw')]").send_keys("123456789123456789")
#模糊匹配某个文字
driver.find_element_by_xpath("//*[contains(text(),'百度首页')]").click()
#模糊匹配以什么开头。这里id应该是kw
driver.find_element_by_xpath("//*[starts-with(@id,'k')]").send_keys("123456789")
#模糊匹配以什么结尾。这里name应该是tj_login
river.find_element_by_xpath("//*[ends-with(@name,'login')]").click()
#模糊匹配正则表达式。这里是百度上面的hao123连接,这里例子只能用在百度首页。其他页面不会显示hao123
driver.find_element_by_xpath("//*[matchs(text(),'hao123')]").click()