• python3+selenium常用语法汇总


    Selenium常用语法总结

    一、Selenium常用定位语法

    1.元素定位

    (1)ID定位元素:

     find_element_by_id(‘’) 

    (2)通过元素的类名称定位元素:

          find_element_by_class_name(‘’)  

    (3)通过元素的html中的位置定位元素:

      find_element_by_xpath(‘’) 

    xpath语法详见:https://www.runoob.com/xpath/xpath-tutorial.html

    (4)通过元素的标签名称定位元素:

      find_element_by_tag_name(‘’)

    (5)通过元素的css定位元素:

       find_element_by_css_selector(‘’)

    css选择器语法详见:https://www.cnblogs.com/yuangushidai/p/10401713.html

    (6)通过元素的名定位元素:

          find_element_by_name(‘’)

    (7)通过元素的链接名称定位元素:

          find_element_by_link_text(‘’)

    (8)通过元素的部分链接名称定位元素:

     find_element_by_partial_link_text(‘’)

     

    2.元素操作

    (1)driver.find_element_by_id(‘’).click()   #点击

    (2)driver.find_element_by_id(‘’).send_keys(“123456”)   #输入

    (3)driver.find_element_by_id(‘’).clear()

    或者如下:

      ele = driver.find_element_by_id(‘’)

      ele.clear()

      ele.send_keys(‘’)

      ele.click()

     

    3,页面操作

    打开网页:driver.get("https://www.baidu.com")

    关闭网页:driver.close()

    在输入框中输入内容:send_keys(“”)

    清空输入框中的内容:text.clear()

    获取输入框中的内容:get_attribute(‘value’)

    刷新页面:driver.refresh()

    页面前进后退:

    driver.forward()

    driver.back()

     

     4.下拉选择框

     先引入下面的包:

    from selenium.webdriver.support.ui import Select

    (1)选择列表:

    select_by_index(self, index)     #以index属性值来查找匹配的元素并选择;

    select_by_value(self, value)       #以value属性值来查找该option并选择;

    select_by_visible_text(self, text)  #以text文本值来查找匹配的元素并选择;

    first_selected_option(self)           #选择第一个option 选项 ;

    (2)清除选择列表

    deselect_by_index(self, index)#以index属性值来查找匹配的元素并取消选择;

    deselect_by_value(self, value)#以value属性值来查找该option并取消选择;

    deselect_by_visible_text(self, text)#以text文本值来查找匹配的元素并取消选择;

    deselect_all(self)               #将所有选择清除;

    (3)选项                                 

    options    #以列表形式返回属于此select标签的所有option

    all_selected_options #全部选择了的option的列表

    first_selected_option #第一个被选中的option元素如果select没有multiple值,此时获取值为当前选择的option

    (4)用法如下:

    eleTime = Select(Driver.find_element_by_id('cc_start_time'))通过find定位好select元素后面进行选择操作

    eleTime.select_by_value()  等

     

    5.单选框

    radio=driver.find_element_by_id("BookMode")

    radio.click()       #选择某个单选项

    radio.clear()      #清空某个单选项

    radio.isSelected()  #判断某个单选项是否已经被选择

     

    6.多选框

    checkbox = driver.find_element_by_id("myCheckbox")

    checkbox.click()

    checkbox.clear()

    checkbox.isSelected()    ##判断是否选中

     

    7.弹出对话框

    driver.switch_to_alert().text  #获取弹出框信息

    driver.switch_to_alert().accept() #接受警告(等于点了个确定)

    driver.switch_to_alert().dismiss() #不接受警告(等于点了个取消)

    driver.switch_to_alert().send_keys(“hello”)  #给警告框输入内容

     用法如下:

    driver.find_element_by_xpath("//*[@id='gxszButton']/a").click()

    driver.switch_to_alert().dismiss() #解散该警告框

    driver.switch_to_alert().accept() #确认

    texts = dirver.switch_to_alert().text()#获取弹出框文本

    print(text) 

     

    8.表单

    approve = driver.find_element_by_id("approve")

    approve.submit()  //只适合于表单的提交

    或者

    driver.find_element_by_id("approve").submit()

     

    9.上传文件

    上传文件的元素操作:

    adFileUpload =driver.find_element_by_id("WAP-upload")

    filePath = "C: est\uploadfile\media_ads\test.jpg"

    adFileUpload.sendKeys(filePath)

     

    10.调用js

    Web driver对Java Script的调用是通过JavascriptExecutor来实现的,例如:

     js1 = 'document.getElementById("su").click();'

    Driver.execute_script(js1)

     

    10.超时设置

    (1)强制等待 sleep(xx),不建议总用这种等待方式,太死板,严重影响程序执行速度

    time.sleep(5)

    (2)隐性等待implicitly_wait(xx),隐性等待对整个driver的周期都起作用,所以只要设置一次即可

    Driver.implicitly_wait(10)

     

     (3) 显性等待WebDriverWait,配合该类的until()和until_not()方法,就能够根据判断条件而进行灵活地等待

    需要调用库如下:

    from selenium.webdriver.support.wait import WebDriverWait

    WebDriverWait(driver, 超时时长, 调用频率, 忽略异常).until(可执行方法, 超时时返回的信息)

    例子:

    WebDriverWait(driver,30).until(lambdax:x.find_element_by_id("kw")).send_keys("sky")

     

    二、Selenium常用鼠标操作

    鼠标操作需导入下面的包:

    from selenium.webdriver.common.actionchains import ActionChains

    常用鼠标操作事件:

     

    click(on_element=None)                    #单击鼠标左键

    click_and_hold(on_element=None)     #点击鼠标左键,按住不放

    context_click(on_element=None)           #点击鼠标右键

    double_click(on_element=None)            #双击鼠标左键

    drag_and_drop(source, target)              #拖拽到某个元素然后松开

    drag_and_drop_by_offset(source, xoffset, yoffset)          #拖拽到某个坐标然后松开

    move_by_offset(xoffset, yoffset)             #鼠标移动到距离当前位置(x,y)

    move_to_element(to_element)               #鼠标移动到某个元素

    move_to_element_with_offset(to_element, xoffset, yoffset) #将鼠标移动到距某个元素多少距离的位置

    release(on_element=None)                     #在某个元素位置松开鼠标左键

    perform()                                             #执行链中的所有动作

    用法如下:

    先定位要操作的元素,在执行鼠标操作

    Right_click = driver.find_element_by_id(‘’)

    ActionChains(driver).context_click(right_click).perfor

     

    鼠标移动、拖拽详细操作参见:

    https://www.cnblogs.com/mengyu/p/6901489.html

     

    三、Selenium常用键盘操作

    1.在使用键盘操作前需导入Key包,如下;

        from selenium.webdriver.common.keys import Keys

    常用按键有:

     回车键 Keys.ENTER

       删除键 Keys.BACK_SPACE

       空格键 Keys.SPACE

      制表键 Keys.TAB

      回退键 Keys.ESCAPE

      刷新键 Keys.F5

    2.常用的组合键有:

       send_keys(Keys.CONTROL,'a')   #全选(Ctrl+A)

       send_keys(Keys.CONTROL,'c')   #复制(Ctrl+C)

       send_keys(Keys.CONTROL,'x')   #剪切(Ctrl+X)

       send_keys(Keys.CONTROL,'v')   #粘贴(Ctrl+V)

     

    3.其他按键详见Keys包与键盘按键对应表

     

    四、常用技巧:

    1.冻结浏览器:setTimeout(()=>{debugger;},8000)  针对浮动变化元素定位

    2.页面跳转:

    (1)driver.switch_to.window(driver.window_handles[-1])  # 将标签对象变为新页面标签、新网址新标签页面书刷新

    将处理对象变为新标签页面,否则浏览器操作对象会找不到要操作页面中的元素

    (2)sreach_window = Driver.current_window_handle

    这一句会切换到新url对象,如果不写这句,浏览器对象会去原来url页面中,找元素操作,这时候我们希望操作的元素找不到就会报错

    3.frame切换

    当你发现定位方法没问题,但定位不到元素时,该元素可能是存在于frame中,你需要先切入frame后再定位元素

    (1)switch_to.frame      切入frame

    (2)switch_to_default_content()    切回主页面(切出frame)

    用法如下:

    driver.switch_to.frame(self.driver.find_element_by_xpath('//*[@id="x-URS-iframe"]'))

     

     

    五、浏览器及驱动下载地址

     

    浏览器驱动下载地址:

    chromedriver驱动下载地址:

    http://chromedriver.storage.googleapis.com/index.html

    geckodriver驱动下载地址:

    https://github.com/mozilla/geckodriver/releases

    iedriverserver驱动下载地址:

    http://selenium-release.storage.googleapis.com/index.html

     

    firefox下载地址

    http://ftp.mozilla.org/pub/firefox/releases/

    chrome下载地址:

    https://www.slimjet.com/chrome/google-chrome-old-version.php

    注意:

    1.firefox56以下不需要安装webdriver驱动,firefox57(firefox47及以上版本)需要安装geckodriver-v0.19.1-win32/64。

    2.IEDriverServer的版本号和Selenium的版本号一定要一致

     

    六、附表

    键盘操作:

    Keys包与键盘按键对应表

     

    NULL = 'ue000'

        CANCEL = 'ue001'  # ^break

        HELP = 'ue002'

        BACKSPACE = 'ue003'

        BACK_SPACE = BACKSPACE   #删除键

        TAB = 'ue004'   #TAB键

        CLEAR = 'ue005' 

        RETURN = 'ue006'

        ENTER = 'ue007'   #回车键

        SHIFT = 'ue008'   #Shift键

        LEFT_SHIFT = SHIFT

        CONTROL = 'ue009'

        LEFT_CONTROL = CONTROL   #Ctrl 键

        ALT = 'ue00a'           #Alt 键

        LEFT_ALT = ALT

        PAUSE = 'ue00b'

        ESCAPE = 'ue00c'   #ECS键

        SPACE = 'ue00d'    #空格键

        PAGE_UP = 'ue00e'   #PgUp 键

        PAGE_DOWN = 'ue00f' #PgDwon 键

        END = 'ue010'    #END 键

        HOME = 'ue011'   #HOME 键

        LEFT = 'ue012'  #左键

        ARROW_LEFT = LEFT 

        UP = 'ue013'    #上键

        ARROW_UP = UP  

        RIGHT = 'ue014'

        ARROW_RIGHT = RIGHT  #右键

        DOWN = 'ue015'      #下键

        ARROW_DOWN = DOWN 

        INSERT = 'ue016'    #insert键

        DELETE = 'ue017'    #del键

        SEMICOLON = 'ue018'  #';'键

        EQUALS = 'ue019'     #'='键

      #数字键盘

        NUMPAD0 = 'ue01a'  # number pad keys

        NUMPAD1 = 'ue01b'

        NUMPAD2 = 'ue01c'

        NUMPAD3 = 'ue01d'

        NUMPAD4 = 'ue01e'

        NUMPAD5 = 'ue01f'

        NUMPAD6 = 'ue020'

        NUMPAD7 = 'ue021'

        NUMPAD8 = 'ue022'

        NUMPAD9 = 'ue023'

        MULTIPLY = 'ue024' # '*' 键

        ADD = 'ue025'   # '+' 键

        SEPARATOR = 'ue026'  #','键

        SUBTRACT = 'ue027'  # '-' 键

        DECIMAL = 'ue028'   # '.'键

        DIVIDE = 'ue029'    #'/'键

     

        F1 = 'ue031'  # function  keys

        F2 = 'ue032'

        F3 = 'ue033'

        F4 = 'ue034'

        F5 = 'ue035'

        F6 = 'ue036'

        F7 = 'ue037'

        F8 = 'ue038'

        F9 = 'ue039'

        F10 = 'ue03a'

        F11 = 'ue03b'

        F12 = 'ue03c'

     

        META = 'ue03d'

        COMMAND = 'ue03d'

     

    --------------------------------

    此文借鉴多篇博客,愚此拜谢

    借鉴处文中已经说明来源,如有侵权,立删!

     

    当你试图去用自己的言语去讲清一些事物时,你会明白对此事物的理解是融会贯通还是一知半解
  • 相关阅读:
    JavaScript的兼容小坑和调试小技巧
    前端jQuery实现瀑布流
    angular常用属性大全
    Eclipse易卡死
    工作反思
    半年回忆
    努力做到
    产品经理如何应对技术的「做不了」这样的问题(转)
    优秀的产品经理我还有多远
    简历技巧
  • 原文地址:https://www.cnblogs.com/1211-1010/p/10898727.html
Copyright © 2020-2023  润新知