文章目录
1.脚本整体解析
2.WebDriver八种元素定位方式
定位方式有很多,但是要保证这种方式存在并且能都唯一的定位到这个元素
不管用哪种方式,必须保证页面上该属性的唯一性
webdriver提供了一系列的对象定位方法,常用的有
id
name
class name
link text
partial link text
tag name
xpath
css selector
如果元素的id存在,id一定可以唯一定位到这个元素的
如果没有id,xpath也可以唯一定位这个元素
以下是不同元素定位方式的代码
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
#浏览器最大化
driver.maximize_window()
#用id来定位
driver.find_element_by_id("kw").send_keys("雪中悍刀行")
driver.find_element_by_id("su").click()
# 用name定位
driver.find_element_by_name("wd").send_keys("徐凤年")
driver.find_element_by_id("su").click()
# class name 元素属性,可能不唯一
driver.find_element_by_class_name("s_ipt nobg_s_fm_hover").send_keys("青岛")
driver.find_element_by_class_name("btn self-btn bg s_btn btn_h btnhover").click()
# link text 链接文本内容/ partial link text部分链接内容 要保证全局唯一性
driver.find_element_by_link_text("hao123").click()
driver.find_element_by_partial_link_text("新").click()
# tag name 必须唯一,input标签太多,定位不到
driver.find_element_by_tag_name("input").send_keys("徐凤年")
driver.find_element_by_tag_name("input").click()
# xpath 唯一定位页面元素, 如果没有唯一定位元素,用xpath可以唯一定位,双引号里应该是单引号
driver.find_element_by_xpath("//*[@id='kw']").send_keys("徐脂虎")
driver.find_element_by_xpath("//*[@id='su']").click()
# Css selector
driver.find_element_by_css_selector("#kw").send_keys("徐渭熊")
driver.find_element_by_css_selector("#su").click()
time.sleep(6)
driver.quit() #关闭浏览器
3.操作测试对象(对元素的操作)
webdriver中比较常用的操作对象的方法有下面几个
click
点击对象
send_keys
在对象上模拟按键输入
clear
清除对象的内容,如果可以的话
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
time.sleep(3)
driver.maximize_window()
# 先搜徐渭熊
driver.find_element_by_css_selector("#kw").send_keys("徐渭熊")
driver.find_element_by_css_selector("#su").click()
time.sleep(6)
#清除徐渭熊
driver.find_element_by_id("kw").clear()
time.sleep(5)
driver.find_element_by_id("kw").send_keys("徐骁")
driver.find_element_by_id("su").click()
time.sleep(6)
driver.quit()
submit
提交搜索信息
text
用于获取元素的文本信息
先去页面定位元素“bottom_layer”
# 获取文本信息
text = driver.find_element_by_id("bottom_layer").text
print(text)
4.等待
固定等待
time.sleep(10)让页面按照规定的时间等待
智能等待
driver.implicitly_wait(10)
5.关闭浏览器
driver.close()
关闭浏览器
driver.quit()
不仅关闭浏览器,还可以清除缓存,建议用这个