文章目录
一个简单的脚本:
# coding = utf-8 #编码格式
from selenium import webdriver #导入包 导入了selenium下的webdirver
import time #导入包
#正文
browser = webdriver.Chrome() #获得谷歌浏览器的驱动,也可以使用其他浏览的驱动,但是浏览器第一个字母要大写
time.sleep(3) #等待3s
browser.get("http://www.baidu.com") #打开百度网页
time.sleep(3)
browser.find_element_by_id("kw").send_keys("selenium") #定位输入框输入selenium
time.sleep(3)
browser.find_element_by_id("su").click() #定位输入框点击百度一下
browser.quit() #关闭浏览器
browser.quit()
close方法关闭当前的浏览器窗口,quit方法不仅关闭窗口,还会彻底的退出webdriver,释放与driver server之间的连接。所以简单来说quit是更加彻底的close,quit会更好的释放资源
简单脚本的构成:
1.在脚本头部导入需要的包
2.获取浏览器的驱动
3.使用浏览器驱动对需要测试的文本系统进行操作
4.关闭浏览器
元素的定位
定位前提:
1.元素必须拥有这个属性
2.元素的属性必须全局唯一
webdriver 提供了一系列的对象定位方法,常用的有以下几种
- id 肯定可以唯一定位到一个元素
- name 不一定全局唯一,很有可能定位不到
- class name 不一定全局唯一,很有可能定位不到
- link text 很有可能定位不到 定位超链接文本(标签)
- partial link text 很有可能定位不到。partial_link_text定位是对link_text定位的补充,partial_link_text为模糊匹配;link_text全部匹配
- tag name 通过标签名来定位 .例如input定位
- xpath 肯定可以定位到元素
- css selector 选中要定位的元素,右击,选中检查
id是全局唯一的
from selenium import webdriver
import time
dirver=webdriver.Chrome()
url="https://www.baidu.com/"
dirver.get(url)
#用id定位百度搜索框
dirver.find_element_by_id("kw").send_keys("刘亦菲")
dirver.find_element_by_id("su").click()
time.sleep(6)
dirver.quit()
from selenium import webdriver
import time
dirver=webdriver.Chrome()
url="http://127.0.0.1:88/zentao/user-login.html"
dirver.get(url)
#用name来定位
dirver.find_element_by_name("account").send_keys("admin")
dirver.find_element_by_name("password").send_keys("xxxxxxx")
dirver.find_element_by_id("submit").click()
time.sleep(6)
dirver.quit()
xpath:右击input框,选择copy,直接选择复制xpath
#xpath定位百度搜索框
dirver.find_element_by_xpath("//*[@id='kw']").send_keys("刘亦菲") #右击copy,可以直接复制xpath
dirver.find_element_by_xpath("//*[@id='su']").click()
css selector定位
#css selector定位百度搜索框
dirver.find_element_by_css_selector("#kw").send_keys("刘亦菲")
dirver.find_element_by_css_selector("#su").click()
time.sleep(6)
dirver.quit()
clear 清除输入框的内容
#清楚输入框内容
dirver.find_element_by_css_selector("#kw").send_keys("刘亦菲")
dirver.find_element_by_css_selector("#su").click()
time.sleep(6)
#清楚文本内容
dirver.find_element_by_id("kw").clear()
dirver.find_element_by_css_selector("#kw").send_keys("西安")
dirver.find_element_by_css_selector("#su").click()
time.sleep(6)
submit 提交表单
只有type类型为submit才可以使用submit提交
from selenium import webdriver
import time
dirver=webdriver.Chrome()
url="https://www.baidu.com/"
dirver.get(url)
#用id定位百度搜索框
dirver.find_element_by_id("kw").send_keys("刘亦菲")
#提交表单,作用和click作用一样
dirver.find_element_by_id("su").submit()
time.sleep(6)
dirver.quit()
text 获取文本内容
#text 获取文本内容
text=dirver.find_element_by_id("s-top-left").text
print(text)
添加等待
from selenium import webdriver
import time
dirver=webdriver.Chrome()
url="https://www.baidu.com/"
dirver.get(url)
#用id定位百度搜索框
dirver.find_element_by_id("kw").send_keys("刘亦菲")
dirver.find_element_by_id("su").submit()
#固定等待,严格执行等待的时间
#time.sleep(10)
#智能等待
dirver.implicitly_wait(10)
dirver.find_element_by_link_text("刘亦菲(华语影视女演员、歌手) - 百度百科").click()
time.sleep(6)
dirver.quit()
打印title和url
#打印
from selenium import webdriver
import time
dirver=webdriver.Chrome()
dirver.get("https://www.baidu.com/")
dirver.maximize_window()
title0=dirver.title
print(title0)
#用id定位百度搜索框
dirver.find_element_by_id("kw").send_keys("刘亦菲")
dirver.find_element_by_id("su").submit()
#固定等待
time.sleep(6)
#智能等待
#dirver.implicitly_wait(10)
#dirver.find_element_by_link_text("刘亦菲(华语影视女演员、歌手) - 百度百科").click()
title=dirver.title
print(title)
dirver.quit()
title=dirver.title
url=dirver.current_url
print(title)
print(url)
dirver.quit()
浏览器的最大化
dirver.maximize_window()
设置浏览器的宽高
#设置浏览器的宽高,前面是宽,后面是高
dirver.set_window_size(400,800)
浏览器的前进后退
#浏览器的后退
dirver.back()
time.sleep(6)
#浏览器的前进
dirver.forward()
time.sleep(6)
浏览器控制条的下拉和上拉到顶端
from selenium import webdriver
import time
dirver=webdriver.Chrome()
url="https://www.baidu.com/"
dirver.get(url)
#用id定位百度搜索框
dirver.find_element_by_id("kw").send_keys("刘亦菲")
dirver.find_element_by_id("su").click()
#浏览器控制条的下拉
js1="var q=document.documentElement.scrollTop=10000"
dirver.execute_script(js1)
time.sleep(6)
#浏览器控制条拉到最顶端
js2="var q=document.documentElement.scrollTop=0"
dirver.execute_script(js2)
time.sleep(6)
dirver.quit()
键盘事件
enter键直接登录
#键盘事件
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
dirver=webdriver.Chrome()
url="http://127.0.0.1:88/zentao/user-login.html"
dirver.get(url)
dirver.maximize_window()
#登录
dirver.find_element_by_id("account").send_keys("admin")
dirver.find_element_by_name("password").send_keys("xxxxxxxx")
#用enter键直接登录
dirv