selenium模块 浏览器操作相关

selenium是自动化工具,广泛应用于爬虫、自动化框架等。

'''
尚需深入:
1、键盘模拟组合操作深入:除CTRL+以外的其他操作
2、鼠标动作链的具体应用:移动、双击、右击、按压、拖放
3、其他处理:弹窗、页面切换、显式隐式等待。
4、模拟登陆豆瓣
'''

# =============================================================================
# #selenium入门操作
# =============================================================================
from selenium import webdriver    #引入浏览器包
from selenium.webdriver import ActionChains    #引入鼠标操作包  双击、右击、拖动、按压等
from selenium.webdriver.common.keys import Keys    #引入键盘按键操作包  Ctrl+、alt+等


import time

#浏览器选项 及 创建浏览器
option=webdriver.ChromeOptions()    #无头浏览选项
option.add_argument('headless')     #添加无头模式选线
#driver=webdriver.Chrome(chrome_options=option)  #创建Chrome浏览器 无头浏览模式
driver=webdriver.Chrome()      #创建Chrome浏览器
#driver=webdriver.PhantomJS()  #创建PhantomJS透明浏览器



#页面基本操作
driver.get('http://www.baidu.com')  #打开网址,获取页面内容

#data=driver.find_element_by_id('wrapper').text  #获取页面id="wrapper"的文本内容
#print(data)
#print(driver.title)                    #打印页面标题
#driver.save_screenshot('baidu.png')    #截屏操作  无头模式也可以截屏
#print(driver.page_source)              #页面源代码 打印
#print(driver.get_cookies())            #获取当前页面cookies
#print(driver.current_url)              #获取当前页面url
#driver.set_window_size(800,600)        #设置窗口大小操作
#driver.maximize_window()               #设置全屏操作
#driver.refresh()                       #刷新操作

driver.find_element_by_id('kw').send_keys('血皇敖天')  #定位输入框,并输入 字符创
driver.find_element_by_id('su').click()  #单击操作 定位按钮
time.sleep(2)



#模拟键盘组合操作
#from selenium.webdriver.common.keys import Keys    #引入键盘按键操作包  Ctrl+、alt+等
shurukuang=driver.find_element_by_id('kw')          #定位输入框
shurukuang.send_keys(Keys.CONTROL,'a')              #Ctrl+A键盘操作
shurukuang.send_keys(Keys.CONTROL,'x')              #Ctrl+x键盘操作
shurukuang.send_keys('寒天青岚')                     #输入文字操作
shurukuang.send_keys(Keys.RETURN)                   #确认键 模拟操作
time.sleep(2)
shurukuang.clear()    #清空 操作



#鼠标动作链操作  移动、单击、双击、右击、按压、拖动
#from selenium.webdriver import ActionChains  #引入鼠标操作包  引入鼠标操作包  双击、右击、拖动、按压等
#移动鼠标 到指定位置
srk=driver.find_element_by_xpath('//*[@id="kw"]')  #先定位
ActionChains(driver).move_to_element(srk).perform()  #移动鼠标 移动到定位元素位置
srk.send_keys(Keys.CONTROL,'V')    #Ctrl+V操作
time.sleep(2) 
bdyx=driver.find_element_by_xpath('//*[@id="su"]')
ActionChains(driver).move_to_element(bdyx).click(bdyx).perform()           #单击 移动并单击
#ActionChains(driver).move_to_element(bdyx).double_click(bdyx).perform()    #双击 移动并双击
#ActionChains(driver).move_to_element(bdyx).context_click(bdyx).perform()   #右击 移动并右击
#ActionChains(driver).move_to_element(bdyx).click_and_hold(bdyx).perform()  #按压 单击并保持
#将A1拖动到A2位置
#A1=driver.find_element_by_xpath('')
#A2=driver.find_element_by_xpath('')
#ActionChains(driver).drag_ang_drop(A1,A2).perform()


#下拉菜单处理
#from selenium.webdriver.support.ui import Select
#select=Select(driver.find_element_by_name('status'))  #首先找到下拉菜单
#select.select_by_index(1)      #根据索引 选择
#select.select_by_value('0')    #根据值(属性值,并非下拉菜单的值) 选择
#select.select_by_visible_text  #根据文字 选择
#select.deselect_all()    #全部取消 选择


#弹窗处理???
#alert=driver.switch_to_alert()


#浏览器页面切换???
#driver.switch_to.window('window name')
#或另一种方法:
#for handle in driver.window_handles:
#    print(handle)
#    driver.switch_to_window(handle)



#页面前进和后退
driver.back()     #后退
time.sleep(2)     #暂停2秒
driver.forward()  #前进


#获取页面Cookies
#可以使用get_cookies()获取页面的所有Cookies,然后for循环得出每个页面Cookie
#for cookie in driver.get_cookies():
#    print('{}={}'.format(cookie['name'],cookie['value']))

#driver.delete_cookie('cookie名称')  #删除指定名称的cookie
#driver.delete_all_cookies()         #删除所有cookies



time.sleep(3)
driver.quit()    #退出浏览器





# =============================================================================
# #页面等待???  两种等待方式:显式 和 隐式
# #显式:指定某一条件,直到条件成立后,才能继续执行下一步
# #隐式:等待特定的时间
# =============================================================================

##显式等待使用 WebDriverWait类,包含四个参数
#from selenium import webdriver
#from selenium.webdriver.common.by import By
#from selenium.webdriver.support.ui import WebDriverWait
#from selenium.webdriver.support import expected_conditions as EC
#
#driver=webdriver.Chrome()      #创建Chrome浏览器
#driver.get('http://www.baidu.om')
#
#try:
#    #查找页面元素id=myDynamicElement,出现则返回;如果超过10秒,则报出异常。
#    element=WebDriverWait(driver,5).until(
#            EC.presence_of_element_located((By.ID,'myDynamicElement'))
#            )
#finally:
#    driver.quit()
#
#
##隐式等待 使用 implicitly_wait()方法
##driver.implicitly_wait(10)  #隐式等待10秒 






# =============================================================================
# #selenium爬虫示例:
# =============================================================================
driver1=webdriver.Chrome()  #创建Chrome浏览器
driver1.get("https://www.jianshu.com/p/aa4a1829840f")  #打开网址,获取页面
driver1.implicitly_wait(2)    #隐式等待2秒

#获取元素文本内容,用xpath
author=driver1.find_element_by_xpath('/html/body/div[1]/div[2]/div[1]/div[1]/div/span/a').text
date=driver1.find_element_by_xpath('/html/body/div[1]/div[2]/div[1]/div[1]/div/div/span[2]').text
word=driver1.find_element_by_xpath('/html/body/div[1]/div[2]/div[1]/div[1]/div/div/span[3]').text
view=driver1.find_element_by_xpath('/html/body/div[1]/div[2]/div[1]/div[1]/div/div/span[4]').text
comment=driver1.find_element_by_xpath('/html/body/div[1]/div[2]/div[1]/div[1]/div/div/span[5]').text
like=driver1.find_element_by_xpath('/html/body/div[1]/div[2]/div[1]/div[1]/div/div/span[6]').text
money=driver1.find_element_by_xpath('/html/body/div[1]/div[2]/div[1]/div[1]/div/div/span[7]').text

print(author, date, word, view, comment, like, money)  #输出内容


time.sleep(2)    #暂停3秒
driver1.quit()    #退出浏览器

#定位UI元素
#findn_element_by_id                   #通过id标签值定位
#findn_element_by_name                 #通过name标签值定位
#findn_element_by_tag_name             #通过标签名来定位
#findn_element_by_xpath                #通过xpath地址来定位
#findn_element_by_link_text            #通过链接文本值定位
#findn_element_by_partial_link_text    #通过部分链接文本值定位
#findn_element_by_class_name           #通过Class名称定位
#findn_element_by_css_selector         #通过css定位




# =============================================================================
# #selenium模拟登陆示例  (???)
# =============================================================================
#driver2=webdriver.Chrome()
#driver2.get('http://www.douban.com')
#driver2.maximize_window()
#
##mmdl=driver2.find_element_by_xpath('/html/body/div[1]/div[1]/ul[1]/li[2]')
##mmdl.click()
#driver2.find_element_by_name('username').send_keys('29xxxx68@qq.com')
#driver2.find_element_by_name('password').send_keys('xxxxx')
#driver2.find_element_by_xpath('/html/body/div[1]/div[2]/div[1]/div[5]/a').click()
#
#time.sleep(2)
#driver2.save_screenshot('doubandenglu.png')

创建测试用例

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import unittest  #引入测试用例模块,注意测试方法使用以 “test”字母开头。
import time


# =============================================================================
# 创建测试用例框架 ,输出建议的测试用例报告
# =============================================================================
class PythonOrgSearch(unittest.TestCase):  #继承测试用例模块
    
    def setUp(self):    #setUp()方法初始化,测试方法执行前执行一遍,即先创建浏览器。
        self.driver=webdriver.Chrome()
        
    def test_search_in_python_org(self):  #测试方法,使用以为“test”字母开头。
        driver=self.driver
        driver.get('http://baidu.com')
        #assert '百度' in driver.title
        srk=driver.find_element_by_xpath('//*[@id="kw"]')
        srk.clear()
        srk.send_keys('血皇敖天')
        srk.send_keys(Keys.ENTER)
        #assert "xxx" in driver.page_source
        time.sleep(5)
        
    def tearDown(self):
        self.driver.quit()
        

if __name__=="__main__":
    unittest.main()
        
        
        

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值