driver的一些页面操作
- WebDriver:操作整个浏览器和当前整个页面
- 当前页面上的选择符合查找条件的对象
- 打开网址,回退,前进,刷新网页
- 获取,改变浏览器窗口大小,关闭浏览器,截屏
- 获取、设置cookies
- WebElement:操作对应web元素
- 当前web元素的所有后代元素里面符合查找条件的对象
- 操作该web元素:比如:
点击元素
输入字符
获取元素坐标。尺寸、文本内容、其他的属性信息
基础配置:
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
driver=webdriver.Chrome(r'C:\workspace\chromedriver.exe')
driver.get('https://www.baidu.com/')
driver.implicitly_wait(10)
操作1:title、url,后退、前进、刷新
print(driver.title) #获得当前页面的title
#百度一下,你就知道
print(driver.find_element_by_tag_name('title').text) #不行,
#driver.title可以,title定义在head标签内,不在网页的可见范围,
#driver.find是真对boby内容的
print(driver.current_url) #获得当前页面的url
#https://www.baidu.com/
driver.back() #后退
driver.forward() #前进
driver.refresh() #刷新
#注意:后退、前进、刷新,要看是不是在当前页面,如果是打开新页面要切换页面后再操作
操作2:截图
注意:截图不要取相同的名称不然会覆盖
driver.screenshot_as_file('day02_baidu.png') 相对路径
# 直接写图片名,默认保存在当前.py文件的路径里
driver.screenshot_as_file(r'D:\baidu.png') 绝对路径
#把截图的照片保存到本地,相当于代码当前的路径
操作3:find_element()
注意:参数为(通过什么元素来寻找,值是多少),值的格式根据什么方式有关系
eleById=driver.find_element(By.CSS_SELECTOR,'#u_sp>a')
print(eleById.text)
eleById=driver.find_elements(By.CSS_SELECTOR,'[id="u_sp"]')
for i in eleById:
print(i)
操作4:get_attribute() 获取该元素的值
注意:获得某个元素的属性的值,输入的是属性名
源代码:
<input type="submit" value="百度一下" id="su" class="btn self-btn bg s_btn">
eleButton=driver.find_element_by_id('su')
print(eleButton.get_attribute('class'))
#bg s_btn
print(eleButton.get_attribute('value'))
#百度一下
print(eleButton.get_attribute('type'))
#submit
操作5:获得某个元素的片段;outerHTML / innerHTML
eleDivA=driver.find_element_by_id('u1')
print(eleDivA.get_attribute('outerHTML')) #打印出片段包括父类标签
#如下是输出的内容
<div id="u1">
<a href="http://news.baidu.com" name="tj_trnews" class="mnav">新闻</a>
<a href="https://www.hao123.com" name="tj_trhao123" class="mnav">hao123</a>
<a href="http://map.baidu.com" name="tj_trmap" class="mnav">地图</a>
<a href="http://v.baidu.com" name="tj_trvideo" class="mnav">视频</a>
<a href="http://tieba.baidu.com" name="tj_trtieba" class="mnav">贴吧</a>
<a href="http://xueshu.baidu.com" name="tj_trxueshu" class="mnav">学术</a>
</div>
print(eleDivA.get_attribute('innerHTML')) #打印的片段不包括父类标签
#如下是输出的内容
<a href="http://news.baidu.com" name="tj_trnews" class="mnav">新闻</a>
<a href="https://www.hao123.com" name="tj_trhao123" class="mnav">hao123</a>
<a href="http://map.baidu.com" name="tj_trmap" class="mnav">地图</a>
<a href="http://v.baidu.com" name="tj_trvideo" class="mnav">视频</a>
<a href="http://tieba.baidu.com" name="tj_trtieba" class="mnav">贴吧</a>
<a href="http://xueshu.baidu.com" name="tj_trxueshu" class="mnav">学术</a>
操作6: 屏幕大小设置
注意:屏幕的原点是从右上角开始
#最大化
driver.maximize_window()
#最小化
driver.minimize_window()
#设置指定的大小(单位:像素),3个参数,2个必填
#set_window_size(self, width, height, windowHandle='current')
driver.set_window_size(800,600)
操作7: 获取窗口尺寸
说明:元素的原点是元素的右上角
1)获取窗口页面尺寸————返回的是一个字典,有高和宽2个元素
size=driver.get_window_size()
print(f'高度是{size["height"]}')
#806
print(f'宽度是{size["width"]}')
#1051
操作8:获取元素窗口尺寸
获取元素窗口尺寸————返回的是一个字典,有高和宽2个元素
butt=driver.find_element_by_id('su')
e_size=butt.size
print(f'按钮高度是{e_size["height"]}')
print(f'按钮宽度是{e_size["width"]}')
操作9:获取窗口当前的位置
获取窗口当前的位置(坐标),单位:像素
loc=driver.get_window_position()
#得到的窗口的位置也是返回的是字典类型
print(f'窗口x坐标是:{loc["x"]},y坐标是:{loc["y"]}')
#窗口x坐标是:9,y坐标是:9