已写过,地址是:搭建Selenium自动化环境
二、常用代码import time
from selenium import webdriver
# 打开浏览器
driver = webdriver.Chrome()
# 在浏览器打开被测项目地址
driver.get('http://www.baidu.com')
# 窗口最大化
driver.maximize_window()
# 窗口最小化
driver.minimize_window()
# 设置宽高
driver.set_window_size(600, 600)
# 回退
driver.back()
# 前进
driver.forward()
# 刷新
driver.refresh()
# 获得标题
print(driver.title)
# 获得当前路径
print(driver.current_url)
# 获得页面代码
print(driver.page_source)
# 截图
time.sleep(3)
driver.get_screenshot_as_file("F:\\11\\a.png")
# 关闭浏览器
driver.close()
三、元素定位
(在百度地址实验) 1、通过id定位元素
driver.find_element_by_id('kw').send_keys("勒布朗詹姆斯")
2、Xpath元素定位 通过xpath绝对路径定位
driver.find_element_by_xpath('/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input').send_keys("勒布朗詹姆斯")
通过xpath相对路径定位
driver.find_element_by_xpath('//form/span/input').send_keys("勒布朗詹姆斯")
通过属性定位(* * * * 四颗星)
driver.find_element_by_xpath('//input[@autocomplete="off"]').send_keys("勒布朗詹姆斯")
driver.find_element_by_xpath('//input[@autocomplete="off" and @id="kw"]').send_keys("勒布朗詹姆斯")
driver.find_element_by_xpath('//input[@autocomplete="off" or @id="kw"]').send_keys("勒布朗詹姆斯")
driver.find_element_by_xpath('//*[@*="off"]').send_keys("勒布朗詹姆斯")
通过部分属性定位 (开头首)
driver.find_element_by_xpath("//a[starts-with(@name, 'ti_trhao']").click()
(第5位开始到最大,包括第5位)
driver.find_element_by_xpath("//a[substring(@name,5)='rmap']").click()
(第5位开始到最大,包括第5位)
driver.find_element_by_xpath("//a[contains(@name,'trvide')]").click()
通过索引定位 (直接复制)
driver.find_element_by_xpath('//*[@id="kw"]').send_keys("勒布朗詹姆斯")
通过文本定位
driver.find_element_by_xpath("//a[text()='地图']").click()
driver.find_element_by_xpath('//a[contains(text(),"hao")]').click()
3、CSS元素定位 绝对路径
driver.find_element_by_css_selector('html body div div div div div form span input').send_keys("勒布朗詹姆斯")
driver.find_element_by_css_selector('html>body>div>div>div>div>div>form>span>input').send_keys("勒布朗詹姆斯")
css样式通过id(#)或者class(.)定位,并且可与标签名组合用
driver.find_element_by_css_selector("#kw").send_keys("勒布朗詹姆斯")
driver.find_element_by_css_selector('.s_ipt').send_keys("勒布朗詹姆斯")
driver.find_element_by_css_selector('input.s_ipt').send_keys("勒布朗詹姆斯")
css通过属性定位(* * * * 四颗星)
driver.find_element_by_css_selector('input[autocomplete="off"]').send_keys("勒布朗詹姆斯")
driver.find_element_by_css_selector('input[autocomplete="off"][id="kw"]').send_keys("勒布朗詹姆斯")
css通过部分属性定位(* * * 三颗星),可以解决动态元素定位不到的场景 ( 开头)
driver.find_element_by_css_selector("input[autocomplete ^='of']").send_keys("勒布朗詹姆斯")
(结尾)
driver.find_element_by_css_selector("input[autocomplete $='ff']").send_keys("勒布朗詹姆斯")
(匹配全部字)
driver.find_element_by_css_selector("input[autocomplete *='of']").send_keys("勒布朗詹姆斯")
css通过子元素定位(类似于xpath中的索引方法) (首)
driver.find_element_by_css_selector("div#ul a: first-child").click()
(尾)
driver.find_element_by_css_selector("div#ul a: last-child").click()
(下标为2)
driver.find_element_by_css_selector("div#ul a: nth-child(2)").click()
css通过查找兄弟元素
driver.find_element_by_css_selector("div#ul a+a+a").click()
a_list = driver.find_element_by_css_selector("div#ul a ~a")
for i in a_list:
print(i, i.text)
总结:定位元素的方式有8种,写法有2种 driver.find_element_by_id() driver.find_element(By.ID, “”) (By.NAME, “”) (By.CLASS_NAME, “”) (By.TAG_NAME, “”) (By.LINK_TEXT, “”) (By.PARTIAL_LINK_TEXT, “”) (By.XPATH, “”) (By.CSS_SELECTOR, “”)