一、浏览器对象
# 导入webdriverfrom selenium import webdriver# 创建一个浏览器对象
driver = webdriver.Firefox()# 设置全屏# driver.maximize_window()
# 获取当前浏览器尺寸# size = driver.get_window_size()
# print(size)
# 设置浏览器尺寸
driver.set_window_size(400, 400)
size = driver.get_window_size()print(size)# print(dir(driver))
# 获取浏览器位置
position = driver.get_window_position()print(position)# 设置浏览器位置
driver.set_window_position(100,200)# 关闭浏览器
driver.quit()
driver.close()
二、页面操作
# 导包from selenium import webdriverimport time# 创建浏览器对象
driver = webdriver.Firefox()# 访问百度
url1 = 'http://www.baidu.com'driver.get(url1)print('访问:',url1)# 访问百度
url2 = 'https://zhuanlan.zhihu.com/'time.sleep(2)driver.get(url2)print('访问:',url2)# 后退操作
time.sleep(2)driver.back()print('后退到',url1)# 前进
time.sleep(2)driver.forward()print('前进到',url2)
三、获取断言信息
(一)获取当前页面URL# 导包from selenium import webdriverimport time# 创建浏览器对象
driver = webdriver.Firefox()# 访问百度
url1 = 'http://www.baidu.com'driver.get(url1)print('访问:',driver.current_url)# 访问百度
url2 = 'https://zhuanlan.zhihu.com/'time.sleep(2)
driver.get(url2)print('访问:',driver.current_url)# 后退操作
time.sleep(2)
driver.back()
print('后退到',driver.current_url)# 前进
time.sleep(2)
driver.forward()print('前进到',driver.current_url)
(二)获取浏览器标题、保存当前页面快照from selenium import webdriver# 创建浏览器对象
driver = webdriver.Firefox()# 访问新浪
url = 'http://www.baidu.com'driver.get(url)# 显示当前的urlprint(driver.current_url)# 显示当前的页面标题print(driver.title)# 保存快照操作# 自动写文件# driver.get_screenshot_as_file('baidu.jpg')
# 自己写文件
data = driver.get_screenshot_as_png()with open('baidu2.jpg','wb') as f:
f.write(data)
driver.close()
(三)获取当前页面源码——不常用
from selenium import webdriver
driver = webdriver.PhantomJS()
url = 'http://www.baidu.com'driver.get(url)
data = driver.page_source
print(type(data))
# 以二进制类型写入文件with open('baidu.html','wb') as f:
f.write(data.encode())# str类型数据(data)转换成bytes类型(二进制类型)
# b_data = data.encode()
# data = b_data.decode()driver.get_screenshot_as_file('baidu3.jpg')
四、元素定位
(一)两种定位形式
①driver.find_element_by_id(' ') 推荐使用from selenium import webdriverimport time# 创建爱你一个浏览器对象
driver = webdriver.Firefox()# 访问百度
url = 'http://www.baidu.com'driver.get(url)
time.sleep(3)
# 定位到搜索框元素
el = driver.find_element_by_id('kw')
# 向输入框中输入数据
el.send_keys('传智播客')
# 定位搜索按钮
el_click = driver.find_element_by_id('su')
el_click.click()
time.sleep(5)
driver.close()
②from selenium.webdriver.common.by import By
driver.find_element(By.XXX,'value')
不推荐使用
from selenium import webdriver# 导入Byfrom selenium.webdriver.common.by import Byimport time
driver = webdriver.Firefox()
url = 'http://www.baidu.com'driver.get(url)
# By调用的定位方式全部为大写el = driver.find_element(By.ID,'kw')
# 输入搜索关键字(向可输入元素输入文本内容)
el.send_keys('itcast')
# 定位到搜索按钮
el_sub = driver.find_element(By.ID,'su')# 点击元素el_sub.click()
# 点击元素el_sub.click()
time.sleep(3)
driver.close()
(二)八种定位方式
①去哪网-验证id定位# 导入webdrvierfrom selenium import webdriverimport time# 创建一个浏览器
driver = webdriver.Firefox()# 访问去哪网
url = 'https://www.qunar.com/'driver.get(url)# 定位到攻略按钮
el = driver.find_element_by_id
('__link_travel__')
# 点击操作,前提是定位到元素
el.click()# 定位到公寓按钮
time.sleep(5)
el_1 = driver.find_element_by_id
('__link_gongyu__')
# 点击操作
el_1.click()
time.sleep(5)
driver.close()
②人人网登陆-验证name定位
# 导入webdriverfrom selenium import webdriverimport time# 创建一个浏览器
driver = webdriver.Firefox()# 访问人人网
url = 'http://www.renren.com/'driver.get(url)# 通过name定位到账号输入
el_user = driver.find_element_by_name
('email')
# 输入账号
el_user.send_keys('17173805860')# 通过name定位到密码输入
el_pwd = driver.find_element_by_name
('password')
# 输入密码
el_pwd.send_keys('1qaz@WSX3edc')# 通过id定位到登陆按钮
el_sub = driver.find_element_by_id('login')# 点击登陆
el_sub.click()
time.sleep(5)
driver.close()
③斗鱼翻页-验证class_name定位
# 导入webdriverfrom selenium import webdriverimport time# 开浏览器
driver = webdriver.Firefox()# 访问斗鱼
url= 'https://www.douyu.com/directory/all'driver.get(url)for i in range(10):# 通过class属性对应的值定位到下一页
el_next = driver.find_element_by_class_
name('shark-pager-next')# 点击翻页
el_next.click()
time.sleep(3)
time.sleep(10)
driver.close()
④bing搜索-验证tag_name定位
# 导包from selenium import webdriverimport time# 开浏览器
driver = webdriver.Firefox()# 访问bing搜索
url = 'https://cn.bing.com/'driver.get(url)# 通过标签名进行定位,该元素要么唯一,要么是第一个
el = driver.find_element_by_tag_name
('input')
el.send_keys('selenium')# 通过id定位到搜索按钮
el_sub = driver.find_element_by_id
('sb_form_go')
# 点击搜索
el_sub.click()
time.sleep(5)
driver.close()
⑤58同城-验证link_text定位
# 导包from selenium import webdriverimport time# 开一个浏览器
driver = webdriver.Firefox()# 访问北京58url = 'http://bj.58.com/'driver.get(url)# 通过连接文本(可以跳转的问题)进行定位
el = driver.find_element_by_link_text
('房屋出租')
el.click()
time.sleep(5)# driver.quit()driver.close()
⑥hao123-验证partial_link_test定位
from selenium import webdriverimport time# 开一个浏览器
driver = webdriver.Firefox()# 访问百度
url='https://www.baidu.com/'driver.get(url)# 通过部分连接文本进行元素定位
# el = driver.find_element_by_partial_link_
text('hao')
el = driver.find_element_by_partial_link_
text('123')
# 点击
el.click()
time.sleep(5)
driver.close()
⑦豆瓣电影-验证xpath定位
from selenium import webdriverimport time# 打开一个浏览器
driver = webdriver.Firefox()# 访问豆瓣电影
url = 'https://movie.douban.com/'driver.get(url)
el = driver.find_element_by_xpath
(".//*[@id='screening']/div[1]/h2/
span[1]/a")
el.click()
time.sleep(5)
driver.close()
⑧天猫国际-验证css_selector定位
# 导包from selenium import webdriverimport time# 开浏览器
driver = webdriver.Firefox()# 访问天猫
url = 'https://www.tmall.com/'driver.get(url)# 定位天猫国际# 1.通过firebug获取css选择器
# el = driver.find_element_by_css_selector
('html.ks-gecko35.ks-gecko.ks-firefox35.
ks-firefox body.w1230 div#mallPage.mui-
global-biz-mallfp div#content div.main-nav
div.inner-con0 div.inner-con1 div.inner-
con2.clearfix a img')
# 2.firepath获取css选择器
# el = driver.find_element_by_css_selector
('.inner-con2.clearfix>a>img')
# 3.自带
el = driver.find_element_by_css_selector
('.inner-con2 > a:nth-child(2) > img:
nth-child(1)')
el.click()
time.sleep(5)
driver.quit()
(三)定位一组
百度搜索-获取一组1# 导包from selenium import webdriverimport time# 开浏览器
driver = webdriver.Firefox()# 访问百度
url = 'http://www.baidu.com'driver.get(url)# 定位输入框
el = driver.find_element_by_id('kw')# 输入关键字
el.send_keys('selenium')# 定位搜索按钮
el_sub = driver.find_element_by_id('su')
el_sub.click()
el_list = driver.find_elements_by_css_
selector('div[id="content_left"]>div>h3>a')
print(el_list)
time.sleep(5)
driver.close()
58租房-获取一组
from selenium import webdriverimport time# 开浏览器
driver = webdriver.Firefox()# 访问租房结果
url = 'http://bj.58.com/chuzu/?PGTID=0d100000-0000-1efb-e60d-a376bad42316&ClickID=1'driver.get(url)# 定位一组搜索结果
el_list = driver.find_elements_by_css_
selector(".listUl > li > div:nth-child(2) > h2:
nth-child(1) > a:nth-child(1)")
print (el_list)
time.sleep(5)
driver.close()
五、元素操作
百度界面
from selenium import webdriver
import time# 创建一个浏览器
driver = webdriver.Firefox()# 访问百度
url = 'http://www.baidu.com'driver.get(url)# 定位到输入框
el = driver.find_element_by_id('kw')# 输入seleniumel.send_keys('selenium')# 清空操作el.clear()# 输入pythonel.send_keys('python')# 定位到搜索按钮
el_sub = driver.find_element_by_id('su')
# 调用提交,submit的作用等同于click,但是click的
使用面要更广一些
el_sub.submit()
time.sleep(5)
driver.close()
58同城
from selenium import webdriver
import time# 开浏览器
driver = webdriver.Firefox()# 访问租房结果
url = 'http://bj.58.com/chuzu/?PGTID=
0d100000-0000-1efb-e60d-a376bad42316&
ClickID=1'
driver.get(url)# 定位一组搜索结果
el_list = driver.find_elements_by_css_
selector(".listUl > li > div:nth-child(2)
> h2:nth-child(1) > a:nth-child(1)")
print (el_list)for el in el_list:
print('标题:',el.text,'链接:',
el.get_attribute('href'))
time.sleep(5)
driver.close()