1、元素定位
class webDriverChrome():
def __init__(self):
self.webDriver = webdriver.Chrome("D:Pythonchromedriver.exe")
def webDriverTest(self):
self.webDriver.get("https://tieba.baidu.com/")
# self.webDriver.find_element_by_id("wd1").send_keys("通过id定位元素")
# self.webDriver.find_element_by_name("kw1").send_keys("通过name定位元素")
# self.webDriver.find_element_by_class_name("search_ipt.search_inp_border.j_search_input.tb_header_search_input").send_keys("通过Class定位元素")
# self.webDriver.find_element_by_link_text("地图").click() #通过链接的名字找到元素,并进行click()点击操作
# self.webDriver.find_element_by_partial_link_text("图").click() #通过链接的部分文字信息来定位到这个元素,若可以找到多个,定位第一个元素
self.webDriver.find_element_by_xpath('//*[@id="wd1"]').send_keys("通过xpath定位")
'''
xpath是比较常用的定位,由于定位比较准确,一般是百发百中,但是缺点是绝对路径的xpath
根据元素标签的相对位置来定位,如果页面的UI元素有所改动,结构路径变化的话,也会导致我们无法定位元素,
不过这是针对我们用firepath自动获取时的定位,我们完全可以根据层级关系和元素属性自己来写xpath路径,
这样的话,即使其他路径结构变化,对于xpath定位的准确度还有一定的保障
比如:
1.我们把xpath的父级路径添加上//form/input[@id='wd1']
2.我们还可以对所查找元素标签里的属性进行组合//form/input[@id='wd1' and @name='kw1']
3.我们对文本进行匹配driver.find_element_by_xpath("//*[contains(text(),'网页')]").click()
可以通过标签的各种属性来定位,等于说是包含了class name、name、id、link_text这些定位的方法
'''
# css selector 定位
'''
用class来定位:driver.find_element_by_css_selector(".search_ipt")
用id来定位:driver.find_element_by_css_selector("#wd1")
用标签名来定位(tag name):driver.find_element_by_css_selector("input")
用父子关系来定位:driver.find_element_by_css_selector("form>input")
用标签和属性来定位:driver.find_element_by_css_selector("input[id='wd1']")
'''
if __name__ == '__main__':
webDriver = webDriverChrome()
webDriver.webDriverTest()
2、元素和浏览器操作
def webDriverOperate1(self):
'''
clear():清除输入框内的文本
send_keys():输入特定的字符 (需要传参)
click():点击元素
submit():提交表单(一般这个方法可以替代click)
:return:
'''
self.webDriver.get("https://tieba.baidu.com/")
self.webDriver.find_element_by_xpath("//*[@id='wd1']").send_keys("文本框内输入信息")
time.sleep(3) #休眠3秒便于查看操作
self.webDriver.find_element_by_xpath("//*[@id='wd1']").clear() #清除文本框内信息
# send_keys 文本框输入值:自动化测试
self.webDriver.find_element_by_xpath("//*[@id='wd1']").send_keys("自动化测试")
# click 点击进入贴吧按钮
self.webDriver.find_element_by_xpath("//*[@id='tb_header_search_form']/span[1]/a").click()
# submit 提交表单(效果等同于click点击)
# driver.find_element_by_xpath("//*[@id='tb_header_search_form']/span[1]/a").submit()
def webDriverOperate2(self):
'''
get()直接访问某个网址(传参输入网址)
back() 返回上一个页面
forward()进入下一个页面
close()关闭当前标签页
quit()关闭浏览器
set_window_size() 设置浏览器大小(传参输入浏览器长、宽)
maximize_window() 最大化浏览器
refresh() 刷新页面
'''
self.webDriver.get("https://www.baidu.com/")
# get() 进入百度页面
time.sleep(3)
# get() 进入贴吧页面
self.webDriver.get("https://tieba.baidu.com/")
time.sleep(2)
# back() 返回上一页:百度页面
self.webDriver.back()
time.sleep(3)
# forward() 返回下一页:贴吧页面
self.webDriver.forward()
time.sleep(3)
# set_window_size() 设置浏览器大小
self.webDriver.set_window_size(500,800)
time.sleep(3)
# minimize_window()最小化浏览器
self.webDriver.minimize_window()
time.sleep(3)
# maximize_window() 最大化浏览器
self.webDriver.maximize_window()
# 点击title为娱乐明星的<a>标签元素
self.webDriver.find_element_by_css_selector("a[title = '娱乐明星']").click()
time.sleep(3)
# 关闭当前页面
self.webDriver.close()
time.sleep(3)
# 关闭浏览器
self.webDriver.quit()