python实现WEB⾃动化(python+selenium) 
⼀、浏览器驱动
  selenium操作不同的浏览器,需要下载不同浏览器的驱动
  以chrome浏览器为例:
  1、进⼊到下载页⾯,到符合⾃⼰浏览器版本的驱动
  2、下载好了之后,右键解压到当前⽂件夹
  3、将得到的放到Python的安装⽬录
    Firefox 浏览器驱动:浏览器驱动
    Chrome 浏览器驱动:备⽤地址
    IE 浏览器驱动:IEDriverServer
    Edge 浏览器驱动:MicrosoftWebDriver
    from selenium import webdriver
    driver = webdriver.Chrome() # Chrome 浏览器
    #driver = webdriver.Firefox() # Firefox 浏览器
    #driver = webdriver.Ie() # Internet Explorer 浏览器
    #driver = webdriver.Edge() # Edge 浏览器
    #通过get()⽅法打开⽹页
    d.get('*')
⼆、定位⽅式
    id ---> find_element_by_id()
    name ---> find_element_by_name()
    class ---> find_element_by_class_name()
    tag_name ---> find_element_by_tag_name()
    ⽂本链接 ---> find_element_by_link_text()
    部分⽂本链接 ---> find_element_by_partial_link_text()xpath
    xpath ---> find_element_by_xpath()
    css_selector ---> find_element_by_css_selector()
  send_keys()输⼊
  clear()清空输⼊内容
  click()单击操作
    # 使⽤selenium 之前,需要先导⼊
    from selenium import webdriver
    from time import sleep
    # 初始化⼀个chrome浏览器
    d = webdriver.Chrome()
    # 通过get⽅法打开⽹址
    d.get("*")
    sleep(2)
    # 通过id定位 user_login
    # 通过 send_keys('XXX')输⼊内容
    d.find_element_by_id('user_login').send_keys('随便输⼊')
    sleep(2)
    # 通过name定位 log
    # 通过 clear()⽅法清除输⼊的内容
    d.find_element_by_name('log').clear()
    sleep(2)
    # 通过class_name定位 input
    d.find_element_by_class_name('input').send_keys('ad')
    sleep(2)
    # 通过tag_name定位 input
    d.find_element_by_tag_name('input').send_keys('min')
    d.find_element_by_css_selector('#wp-submit').click()
  close()关闭当前窗⼝
  quit()关闭所有浏览器并退出驱动
  text 获取元素⽂本属性
    from selenium import webdriver
    from time import sleep
    d = webdriver.Chrome()
    d.get('*')
    #通过xpath定位到⽤户名
    d.find_element_by_xpath('//label[@for="user_login"]/input').send_keys('admin')
    sleep(1)
    #通过css定位到⽤户名
    d.find_element_by_css_selector('#user_pass.input').send_keys('admin123')
    sleep(1)
    d.find_element_by_css_selector('#wp-submit').click()
element表格横向滚动条
    sleep(1)
    # text 获取元素的⽂本信息
    login_msg = d.find_element_by_css_selector('.display-name').text
    print(login_msg)
    d.close()#关闭浏览器
    d.quit()#关闭浏览器并且关闭驱动
  最⼤化窗⼝maximize_window()
  隐式等待implicitly_wait(10)
  判断元素是否可见is_displayed()
    from selenium import webdriver
    from time import sleep
    d = webdriver.Chrome()
    # 最⼤化窗⼝
    d.maximize_window()
    # 隐式等待,设置最⼤的等待时长,只对查元素(find_elementXXX)⽣效
    d.implicitly_wait(10)
    d.get('*')
    d.find_element_by_css_selector('#user_login').send_keys('admin')
    # 判断元素是否可见 is_displayed()
    password_result = d.find_element_by_css_selector('#user_pass').is_displayed()
    print('可见的元素:'+str(password_result))
    other_result =
    d.find_element_by_css_selector('[name="redirect_to"]').is_displayed()
    print('不可见的元素:'+str(other_result))
    # 在html中 type="hidden" 属性是不可见的
  submit() ⽤于提交表单
   点击登录按钮,⼀般情况下,使⽤click()进⾏点击
    有些时候也可以使⽤submit()代替click(),相当于敲回车
    #d.find_element_by_css_selector('#wp-submit').click()
    d.find_element_by_css_selector('#wp-submit').submit()
    sleep(1)
    get_attribute(“属性”) 获得属性值
  获取属性的值,根据属性名称获取对应的值
    # get_attribute('属性名称')
    att = d.find_element_by_css_selector('#user_login').get_attribute('size')
    print(att)
  ⿏标悬停
    需要导⼊:
    from selenium.webdriver import ActionChains
    mte = d.find_element_by_css_selector('#menu-posts .wp-menu-name')# 需要悬停的元素    #ActionChains(浏览器).move_to_element(悬停的元素).perform()
    # perform()执⾏操作
    ActionChains(d).move_to_element(mte).perform()
  表单切换
    switch_to.frame(需要切换到的表单)
    switch_to.default_content()切换到最外层表单
    #切换表单 switch_to.frame()
    # 先定位到需要切换的表单
    #⽅法⼀
    iframe = d.find_elements_by_tag_name("iframe")[0]
    d.switch_to.frame(iframe)
    #⽅法⼆
    d.switch_to.frame(0)
    #⽅法三
    frames = d.find_element_by_css_selector('#content_ifr')
    d.switch_to.frame(frames)
    d.find_element_by_css_selector('#tinymce').send_keys('这是正⽂')
    sleep(3)
    # 切换到最外层表单
    d.switch_to.default_content()
    d.find_element_by_css_selector('#publish').click()
  像表单的切换/⿏标的悬停为提⾼成功率,最好是在操作后sleep(1)秒
  切换窗⼝ switch_to.window(需要切换到的窗⼝)
  获取所有窗⼝,以列表的形式返回过来 d.window_handles
    from selenium import webdriver
    from time import sleep
    d = webdriver.Chrome()
    # 最⼤化窗⼝
    d.maximize_window()
    # 隐式等待,设置最⼤的等待时长,只对查元素(find_elementXXX)⽣效    d.implicitly_wait(10)
    d.get('*')
    d.find_element_by_css_selector('#q').send_keys("appium环境搭建")
    d.find_element_by_css_selector('.ic-search').click()
    sleep(3)
    # 获取所有窗⼝,以列表的形式返回过来
    all_windows = d.window_handles
    print(all_windows)
    #切换窗⼝,根据所有窗⼝的下标来切换
    d.switch_to.window(all_windows[1])
    sleep(3)
    d.find_element_by_css_selector('#q').clear()
  关于select标签的下拉框如何进⾏选择
  ⾸先需要先导⼊⼀个包(注意Select的S需要⼤写)
    from selenium.webdriver.support.ui import Select
    # 使⽤Select⽅法进⾏选择
    # 先导⼊Select 类from selenium.webdriver.support.ui import Select
    # 需要先定位到下拉框
    elements = d.find_element_by_css_selector('#role')
    #Select(需要操作下拉框).根据什么操作
    Select(elements).select_by_index(2)# 根据index,下标定位,从0开始    sleep(3)
    Select(elements).select_by_value('administrator')#根据value定位
    sleep(3)
    Select(elements).select_by_visible_text('投稿者')#根据⽂本定位
  警告框的处理
    switch_to.alert
    from selenium import webdriver
    from time import sleep
    from selenium.webdriver import ActionChains
    d = webdriver.Chrome()
    # 最⼤化窗⼝
    d.maximize_window()
    # 隐式等待,设置最⼤的等待时长,只对查元素(find_elementXXX)⽣效    d.implicitly_wait(10)
    d.get('https:/*')
    mte = d.find_element_by_link_text('设置')
    ActionChains(d).move_to_element(mte).perform()
    sleep(1)
    d.find_element_by_css_selector('.setpref').click()
    sleep(1)
    d.find_element_by_css_selector('.prefpanelgo').click()
    # 获取警告框的⽂本信息
    alert_msg = d.switch_
    print(alert_msg)
    # 接受警告框 accept()
    d.switch_to.alert.accept()
    # 取消警告框 dismiss()
    d.switch_to.alert.dismiss()
  js代码
    from selenium import webdriver
    from time import sleep
    d = webdriver.Chrome()
    d.get('*')
    #window.scrollTo(A,B);# 控制浏览器的滚动条
    #window.scrollTo(A,B);# 控制浏览器的滚动条 A 表⽰与左边框的距离 B表⽰与上边框的距离    # js_code1 = "window.scrollTo(0,600);"
    # js_code2 = "window.scrollTo(0,1200);"
    #document.querySelector('css的定位').removeAttribute('移除的属性名');
    js_code1 =
    '''document.querySelector('[name="testcookie"]').removeAttribute('type');'''
    d.execute_script(js_code1)
    sleep(5)
  定位⼀组元素find_elements_by_XXX
  以列表的形式返回
    # 定位⼀组元素
    goodlist = d.find_elements_by_css_selector('.goods_title')
    choice(goodlist).click()
————————————————

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。