from selenium import webdriver
import time
from selenium.webdriver.support.select import Select
‘’’
url=‘http://www.baidu.com’
f=webdriver.Firefox()
f.get(url)
el1=f.find_element_by_link_text(‘设置’)
el1.click()
el2=f.find_element_by_css_selector(’.setpref’)
el2.click()
print(f.page_source)
el3=f.find_element_by_css_selector(’.se-setting-3 .nr’)
el3s=Select(el3)
#索引选择
el3s.select_by_index(0)
el3s.select_by_index(1)
el3s.select_by_index(2)
#值选择
el3s.select_by_value(‘50’)
el3s.select_by_value(‘20’)
el3s.select_by_value(‘10’)
#可显示值选择
el3s.select_by_visible_text(‘每页选择50条’)
el3s.select_by_visible_text(‘每页选择20条’)
el3s.select_by_visible_text(‘每页选择10条’)
#显示已选择的元素
el3s.all_selected_options
el3s.first_selected_option
el3s.is_multiple
el3s.options
#取消选择
el3s.deselect_by_index()
el3s.deselect_by_value()
el3s.deselect_by_visible_text()
#-------------------------------操作JS-----------------------------------------
#操作JS进行网页下拉
f=webdriver.Chrome()
f.get(‘https://wenku.baidu.com/’)
jsb=‘window.scrollTo(0,1000)’#x为水平位移,y为竖直位移
f.execute_script(jsb)
time.sleep(3)
jsb1=‘var q=document.documentElement.scrollTop=0’#scrollTop=x,距离顶端为x像素
f.execute_script(jsb1)
#-------------------------------等待-----------------------------------------
#浏览器等待:显示等待、隐式等待
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url=‘http://www.google.com’
f=webdriver.Chrome()
f.get(url)
#显示等待
#WebDriverWait(f,10,0.5).until(EC.presence_of_element_located((By.ID,‘lg’)))
#隐式等待
f.implicitly_wait(3)
f.quit()
f.quit()
#-------------------------------cookies使用-----------------------------------------
#使用方法:get_cookies | get_cookie(cookie_key) | add_cookie(cookie_dict)
delete_cookie(name) | delete_all_cookies()
f=webdriver.Chrome()
f.get(url)
#获取cookies
cookies=f.get_cookies()
print(cookies)
#删除cookies
f.delete_all_cookies()
cookies=f.get_cookies()
print(cookies)
f.quit()
#-------------------------------简单封装-----------------------------------------
#常见封装:1、开启关闭浏览器 2、定位操作 3、对元素基本操作
from selenium import webdriver
import time
class Comm(object):
# 初始化方法
def init(self):
# 创建浏览器对象
self.driver = webdriver.Chrome()
# 设置隐式等待
self.driver.implicitly_wait(5)
# 设置浏览器的最大化
self.driver.maximize_window()
def open_url(self,url):
# 请求指定站点
self.driver.get(url)
time.sleep(3)
def locateElement(self, locate_type, value):
# 判断定位方式并调用相关方法
el = None
if locate_type == 'id':
el = self.driver.find_element_by_id(value)
elif locate_type == 'name':
el = self.driver.find_element_by_name(value)
elif locate_type == 'class':
el = self.driver.find_element_by_class_name(value)
elif locate_type == 'text':
el = self.driver.find_element_by_link_text(value)
elif locate_type == 'xpath':
el = self.driver.find_element_by_xpath(value)
elif locate_type == 'css':
el = self.driver.find_element_by_css_selector(value)
# 如果el不为None,则返回
if el is not None:
return el
# 指定对某一元素的点击操作
def click(self, locate_type, value):
# 调用定位方法进行元素定位
el = self.locateElement(locate_type,value)
# 执行点击操作
el.click()
time.sleep(1)
# 对指定的元素进行数据输入
def input_data(self,locate_type,value,data):
# 调用定位方法进行元素定位
el = self.locateElement(locate_type,value)
# 执行输入操作
el.send_keys(data)
# 获取指定元素的文本内容
def get_text(self, locate_type, value):
# 调用定位方法进行元素定位
el = self.locateElement(locate_type, value)
return el.text
# 获取指定元素的属性值
def get_attr(self, locate_type, value, data):
# 调用定位方法进行元素定位
el = self.locateElement(locate_type, value)
return el.get_attribute(data)
# 收尾清理方法
def __del__(self):
time.sleep(3)
self.driver.quit()
if name == ‘main’:
pass
‘’’
import unittest
class Testa(unittest.TestCase):
def test_001(self):
driver=webdriver.Chrome()
driver.get(‘http://www.abreact.top/login/’)
el1=driver.find_element_by_name(‘loginName’)
el1.send_keys(‘root’)
el2=driver.find_element_by_name(‘loginPwd’)
el2.send_keys(‘12’)
el3=driver.find_element_by_id(‘sub’)
el3.click()
el4=driver.find_element_by_id(‘mi’).text
self.assertEqual(“root”,el4)
driver.quit()
def test_002(self):
driver=webdriver.Chrome()
driver.get(‘http://www.abreact.top/login/’)
el1=driver.find_element_by_name(‘loginName’)
el1.send_keys(‘root’)
el2=driver.find_element_by_name(‘loginPwd’)
el2.send_keys(‘1222’)
el3=driver.find_element_by_id(‘sub’)
el3.click()
el4=driver.switch_to.alert.text
self.assertEqual(‘登陆失败,请重新登陆!!’,el4)
driver.quit()
if name==‘main’:
tests=Testa()
suit=unittest.TestSuite()
test_list=[‘test_001’,‘test_002’]
for i in test_list:
suit.addTest(Testa(i))
unittest.TextTestRunner(verbosity=2).run(suit)