一、多标签窗口(不懂)
from selenium import webdriver
# 开浏览器
driver = webdriver.Firefox()
# 访问北京58
url = 'http://bj.58.com/'
driver.get(url)
# 定位到房屋出租元素
el = driver.find_element_by_link_text
('房屋出租')
# 打印当前的浏览器句柄(浏览器的身份证列表)
print('点击之前的身份证列表是:',
driver.window_handles)
print('点击前的url:',driver.current_url)
el.click()
print('点击之后的身份证列表是:',
driver.window_handles)
print('当前标题:',driver.title)
# 进入第二个窗口
# 保存句柄列表
handle_list = driver.window_handles
# 同句柄(身份证)索引进入相关的窗口
driver.switch_to.window(handle_list[1])
print('切换之后的标题:',driver.title)
二、表单框架
(一)进入表单(似懂非懂)
# 导包
from selenium import webdriver
import time
# 创建浏览器
driver = webdriver.Firefox()
# 访问126
url = 'http://126.com/'
driver.get(url)
# 防止加载太快
time.sleep(5)
# 定位到表单
# el_frame = driver.find_element
_by_css_selector('#x-URS-iframe')
# 切换进入表单中# driver.switch_to.frame(el_frame)
# 通过id进入
# 在表单中定位账号输入框
el_user = driver.find_element_by_name
('email')
el_user.send_keys('itcast_soft_test')
# 定位密码输入框标签
el_pwd = driver.find_element_by_name
('password')
el_pwd.send_keys('1qaz2wsx#EDC')
# 定位登陆按钮
el_sub = driver.find_element_by_id('dologin')
# 点击登录
el_sub.click()
time.sleep(5)
driver.close()
(二)退出表单
案例:本地加载-多表单切换
# 导入os库,用于获取文件路径
import os
import time
# 创建浏览器
driver = webdriver.Firefox()
# 获取网页访问路径,os.path.abspath
(文件名)获取文件的绝对路径
file_path = 'file:///' + os.path.abspath
('example_frame.html')
print(file_path)
driver.get(file_path)
time.sleep(5)
# 切换到第一个表单中
driver.switch_to.frame('itcast_frame1')
# 切换到第二层表单
driver.switch_to.frame('itcast_frame2')
# 定位到输入框
el = driver.find_element_by_id
('sb_form_q')
el.send_keys('selenium')
# 定位点击按钮
el_sub = driver.find_element_by_id
('sb_form_go')
# 定位一个元素,验证已经到达深层表单
el_search = driver.find_element_by_id
('sb_form')
driver.switch_to.default_content()
try:
el_search = driver.find_element_by_id
('sb_form') except:print('已经从表单中退出')
三、警告框
from selenium import webdriver
import time
# 创建一个浏览器
driver = webdriver.Firefox()
# 访问百度
url = 'http://www.baidu.com'
driver.get(url)
# 定位到设置
el = driver.find_element_by_link_text('设置')
el.click()
# 定位搜索设置,并点击
el_set = driver.find_element_by_css_
selector('.setpref')
# 定位保存设置按钮
el_save = driver.find_element_by_css_
selector('.prefpanelgo')
time.sleep(2)
# 进入警告框中,并且点击接受
#driver.switch_to.alert.accept()
# 进入警告框,并且解散警告框
time.sleep(5)
driver.quit()
四、鼠标键盘框
from selenium import webdriver
# 导入动作链类
from selenium.webdriver import ActionChains
# 开浏览器
driver = webdriver.Firefox()
# 访问百度
url = 'http://www.baidu.com'
driver.get(url)
# 定位到logo元素
el_logo = driver.find_element_by
_css_selector('#lg > map:nth-child(2)
> area:nth-child(1)')
# 鼠标右击操作,操作元素前,需要将操作的元素定位
出来并且穿入相应的动作中,如果要执行操作,需要调
用perform()
ActionChains(driver).context_click(el_logo)
.perform()
from selenium import webdriver
# 导入动作链类
from selenium.webdriver import ActionChains
import time
# 开浏览器
driver = webdriver.Firefox()
# 访问头条
url = 'https://www.toutiao.com/ch/news
_society/'
# 定位到需要双击操作的元素
el = driver.find_element_by_css_selector
('.wchannel > ul:nth-child(2) >
li:nth-child(2) > a:nth-child(1)
> span:nth-child(1)')
# 双击定位到的元素,进行切换
ActionChains(driver).double_click(el).
perform()
time.sleep(5)
driver.quit()
from selenium import webdriver
# 导入动作链类
from selenium.webdriver import ActionChains
import time
# 开一个浏览器
driver = webdriver.Firefox()
driver.maximize_window()
# 访问京东
url = 'http://www.jd.com'
driver.get(url)
# 获取分类组元素
el_list = driver.find_elements_by_
class_name('cate_menu_item')
for el in el_list:
# 鼠标悬停操作
ActionChains(driver).move_to_element(el)
.perform()
time.sleep(1)driver.quit()
from selenium import webdriver
# 导入Key类,key类中包含很多键盘按钮操作
from selenium.webdriver.common.keys import
Keys
# 打开浏览器
driver = webdriver.Firefox()
# 访问必应搜索
url= 'http://cn.bing.com/'
driver.get(url)
# 定位到输入框
el = driver.find_element_by_id('sb_form_q')
# 输入关键字
el.send_keys('selenium')
time.sleep(1)
el.send_keys(Keys.CONTROL,'a')
time.sleep(1)
# 执行剪切操作
el.send_keys(Keys.CONTROL,'x')
time.sleep(1)
# 执行粘贴操作
el.send_keys(Keys.CONTROL,'v')
time.sleep(1)
# 清空操作
el.clear()
#输入 单词
el.send_keys('seleniumn')
time.sleep(1)
# 退格删除
el.send_keys(Keys.BACK_SPACE)
time.sleep(5)
driver.quit()
五、下拉框
案例一:百度
from selenium import webdriver
# 导入Select类
from selenium.webdriver.support.select
import Select
# 创建一个浏览器
driver = webdriver.Firefox()
# 访问百度
url = 'http://www.baidu.com'
driver.get(url)
# 定位到设置元素并且点击
el = driver.find_element_by_link_text
('设置')
# 定位搜索设置,并且点击
el_set = driver.find_element_by_
css_selector('.setpref')
# 定位到下拉框元素
el_select = driver.find_element_by_id( 'nr' )
# 创建下拉框对象
selobj = Select(el_select)
# 通过选项的索引进行设置
# selobj.select_by_index(0)
# time.sleep(1)
#
selobj.select_by_index(1)
# time.sleep(1)
# selobj.select_by_index(2)
# selobj.select_by_value('50')
# time.sleep(1)
#
selobj.select_by_value('20')
# time.sleep(1)
#
selobj.select_by_value('10')
# time.sleep(1)
# 通过可见文本进行选择
# selobj.select_by_visible_text
('每页显示50条')
# time.sleep(1)
# selobj.select_by_visible_tex
t('每页显示10条')
# selobj.select_by_visible_text
('每页显示20条')
#
打印对一个选择的选项
print ( selobj.first_selected_option.text )
案例二:hao123
from selenium import webdriver
import time
# 创建浏览器
driver = webdriver.Firefox()
# 访问好123
url = 'https://www.hao123.com/'
driver.get(url)
for i in range(100):
# x管水平,y管垂直
js = 'window.scrollTo(0,%s)'%(i*100)
driver.execute_script(js)
time.sleep(0.5)
# js1= "var q=document.documentElement.
scrollTop=0"# driver.execute_script(js1)
# driver.execute_script(js1)
driver.quit()
六、定位等待
显式等待
from selenium import webdriver
import time
# 创建浏览器
driver = webdriver.Firefox()
# 访问好123
url = 'https://www.hao123.com/'
driver.get(url)
for i in range(100):
# x管水平,y管垂直
js = 'window.scrollTo(0,%s)'%(i*100)
driver.execute_script(js)
time.sleep(0.5)
# js1= "var q=document.documentElement
.scrollTop=0"# driver.execute_script(js1)
# driver.execute_script(js1)
driver.quit()
隐式等待
from selenium import webdriver
# 创建浏览器
driver = webdriver.Firefox()
url = 'https://www.amazon.cn/'
driver.get(url)
driver.implicitly_wait(20)
driver.close()
六、cookies
from selenium import webdriver
# 创建浏览器
driver = webdriver.Firefox()
# 访问有道
url = 'http://www.youdao.com/'
driver.get(url)
# 获取cookies,直接调用,不需要参数
data = driver.get_cookies()
print(data)
# 删除所有cookies
driver.delete_all_cookies()
# 设置cookies
cookie = {"name":"itcast","value":"soft_test"}
driver.add_cookie(cookie)# 获取
data1 = driver.get_cookies()
print(data1)
——Selenium封装——
(不懂)
from selenium import webdriver
import time
class Common(object):
# 初始化
def __init__(self):
# 创建浏览器
self.driver = webdriver.Firefox()
# 浏览器最大化
self.driver.maximize_window()
# 访问指定url
def open_url(self, url):
self.driver.get(url)
self.driver.implicitly_wait(10)
def close_driver(self):
self.driver.quit()
# 结束的时候清理了
def __del__(self):
time.sleep(3)
self.driver.quit()
if __name__ == '__main__':
com = Common()
com.open_url('http://www.baidu.com')
com.open_url('http://www.hao123.com')
com.close_driver()