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:\test\\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'

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

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

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

python3+selenium常用语法汇总的更多相关文章

  1. Angular学习资料大全和常用语法汇总(让后端程序员轻松上手)

    前言: 首先为什么要写这样的一篇文章呢?主要是因为前段时间写过一些关于Angualr的相关实战文章,有些爱学习的小伙伴对这方面比较感兴趣,但是又不知道该怎么入手(因为认识我的大多数小伙伴都是后端的同学 ...

  2. sql 常用语法汇总

    Sql常用语法 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控 ...

  3. java selenium常用API汇总

    (WebElement.iFrame.select.alert.浏览器窗口.事件.js)     一 WebElement相关方法 1.点击操作 WebElement button = driver. ...

  4. 【Linq】常用语法汇总

    语言继承查询(Language Integrated Query, LINQ),在C#编程语言中集成了查询语法,可以用相同的语法访问不同的数据源,LINQ提供了不同数据源的抽象层,所以可以使用相同语法 ...

  5. Selenium常用操作汇总二——如何把一个元素拖放到另一个元素里面(转)

    Q群里有时候会有人问,selenium  webdriver怎么实现把一个元素拖放到另一个元素里面.这一节总一下元素的拖放. 下面这个页面是一个演示拖放元素的页面,你可以把左右页面中的条目拖放到右边的 ...

  6. Selenium常用操作汇总二——如何操作select下拉框

    下面我们来看一下selenium webdriver是如何来处理select下拉框的,以http://passport.51.com/reg2.5p这个页面为例.这个页面中有4个下拉框,下面演示4种选 ...

  7. Selenium常用操作汇总二——如何操作cookies(转)

    Web 测试中我们经常会接触到Cookies,一个Cookies主要属性有”所在域.name.value.有效日期和路径",下面来讲一下怎么操作Cookies. import java.ut ...

  8. Selenium常用操作汇总二——如何处理alert、confirm、prompt对话框

    alert.confirm.prompt这样的js对话框在selenium1.X时代也是难啃的骨头,常常要用autoit来帮助处理. 试用了一下selenium webdriver中处理这些对话框十分 ...

  9. Selenium常用操作汇总二——如何得到弹出窗口

    在selenium 1.X里面得到弹出窗口是一件比较麻烦的事,特别是新开窗口没有id.name的时候.当时还整理了处理了几种方法,详见:http://seleniumcn.cn/read.php?ti ...

随机推荐

  1. ubuntu 16.04 安装Opencv-3.2.0_GPU 与 opencv_contrib-3.2.0

    1.准备依赖库 sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config ...

  2. Vue结合webpack实现路由懒加载和分类打包

    https://blog.csdn.net/weixin_39205240/article/details/80742723

  3. #python#return和print的一些理解

    https://www.jianshu.com/p/18a6c0c76438 代码 (1) ++++++++++++++++++++++++++++++++++ x = 1y = 2def add ( ...

  4. Codeforces Gym 100851 K King's Inspection ( 哈密顿回路 && 模拟 )

    题目链接 题意 : 给出 N 个点(最多 1e6 )和 M 条边 (最多 N + 20 条 )要你输出一条从 1 开始回到 1 的哈密顿回路路径,不存在则输出 " There is no r ...

  5. HDU 6656 Kejin Player

    hdu题面 Time limit 5000 ms Memory limit 524288 kB OS Windows 解题思路 因为升级只能一级一级地升,所以所求期望满足了区间加的性质,可以一级一级地 ...

  6. 今天跟outlook顶上牛了

    之前使用的是2007,然后之前弄东西的时候给升到2010了,之前就是把所有的邮件都保存到本地的文件中,我还想使用之前的文件,然后2010就是不好使,后来查了半天发现原来是需要手动创建账户,参考http ...

  7. 将DVD.iso 挂载到虚拟机

    将DVD.iso挂载到虚机之后,默认设备名是/dev/sr0 挂载DVD.iso文件到/mnt. 操作: mount /dev/sr0 /mnt 查看: ll /mnt

  8. 南京网络赛 E K Sum

    K Sum 终于过了这玩意啊啊啊==== 莫比乌斯反演,杜教筛,各种分块,积性函数怎么线性递推还很迷==,得继续研究研究 #include<bits/stdc++.h> using nam ...

  9. linux系统安装步骤

    在虚拟机安装OEL linux 6.5图解(64位) 一,搭建虚拟机环境 虚拟机环境建议10.0版本及以上 可以从官网上下载OELlinux的安装包,http://www.oracle.com 打开虚 ...

  10. DVWA--CSP Bypass

    0x01看到标题,是否有点疑惑 CPS 是什么东东.简单介绍一下就是浏览器的安全策略,如果 标签,或者是服务器中返回 HTTP 头中有 Content-Security-Policy 标签 ,浏览器会 ...