selenium+python3 一些基本语法总结

以下是转自一位python3之手,感觉总结的不错:

-、Selenium 常用定位语法:

1. 元素定位:

  (1) ID定位元素:

    find_element_by_id('')

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

       find_element_by_class_name('')

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

       find_element_bu_xpaht('')

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

       find_element_by_css_selector('')

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

       find_element_by_tag_name('')

    (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('1').send_keys('2') # 1 获取某个框 2 发送某个元素

       (3)driver.find_element_by_id(‘’).clear() # 清除某个框

3、页面操作:

      driver.get("http://www.baidu.com") #打开百度网页

       driver.close() #关闭某个网页

      send_keys('') #输入框中输入内容 

       text.clear() #输入框中清除框中的内容

       get_attribute('') #获取框中的内容

       driver.refresh() #刷新页面

       driver.back() #页面后退

       driver.forward()#页面前进

 

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文本值来查找匹配的元素并选择

 (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

   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('checkbox')

      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")

   approver.submit() #只适合于表单的提交

  9、上传文件

   上传文件的元素操作

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

   filePath = "d:\XXX.jpg"

   adFileUpload.sendKeys(filePath)

 10 调用js

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

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

       Driver.execute_script(js1)

 11  超时设置

  (1) 强制等待  sleep(x)

        time.sleep(4)

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

        driver.implicity_wait(10)

  (3) 显性等待 WebDriverWait 配合该类的unit() unit_not()方法,就能够判断条件进行灵活地待等

    引入如下库

         from selenium.webdriver.support.wait import WebDriverWait

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

      WebDriverWait(driver.30).until(lambadax: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

 

三、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'

posted @ 2019-08-23 12:11  李罡  Views(200)  Comments(0Edit  收藏  举报