Seleninum作为自动化测试的工具,自然是提供了很多自动化操作的函数,
下面列举下个人觉得比较常用的函数,更多可见官方文档:
官方API文档:http://seleniumhq.github.io/selenium/docs/api/py/api.html

1) 定位元素

find_element_by_class_name:根据class定位
find_element_by_css_selector:根据css定位
find_element_by_id:根据id定位
find_element_by_link_text:根据链接的文本来定位
find_element_by_name:根据节点名定位
find_element_by_partial_link_text:根据链接的文本来定位,只要包含在整个文本中即可
find_element_by_tag_name:通过tag定位
find_element_by_xpath:使用Xpath进行定位
PS:把element改为elements会定位所有符合条件的元素,返回一个List
比如:find_elements_by_class_name

2) 鼠标动作

有时需要在页面上模拟鼠标操作,比如:单击,双击,右键,按住,拖拽等
可以导入ActionChains类:selenium.webdriver.common.action_chains.ActionChains
使用ActionChains(driver).XXX调用对应节点的行为click(element):单击某个节点;
click_and_hold(element):单击某个节点并按住不放;
context_click(element):右键单击某个节点;
double_click(element):双击某个节点;
drag_and_drop(source,target):按住某个节点拖拽到另一个节点;
drag_and_drop_by_offset(source, xoffset, yoffset):按住节点按偏移拖拽
key_down:按下特殊键,只能用(Control, Alt and Shift),比如Ctrl+C
ActionChains(driver).key_down(Keys.CONTROL).send_keys(‘c’).key_up(Keys.CONTROL).perform();
key_up:释放特殊键;
move_by_offset(xoffset, yoffset):按偏移移动鼠标;
move_to_element(element):鼠标移动到某个节点的位置;
move_to_element_with_offset(element, xoffset, yoffset):鼠标移到某个节点并偏移;
pause(second):暂停所有的输入多少秒;
perform():执行操作,可以设置多个操作,调用perform()才会执行;
release():释放鼠标按钮
reset_actions:重置操作
send_keys(keys_to_send):模拟按键,比如输入框节点.send_keys(Keys.CONTROL,’a’)
全选输入框内容,输入框节点.send_keys(Keys.CONTROL,’x’)剪切,模拟回退:
节点.send_keys(keys.RETURN);或者直接设置输入框内容:输入框节点.send_keys(‘xxx’);
send_keys_to_element(element, *keys_to_send):和send_keys类似;

3) 弹窗

对应类:selenium.webdriver.common.alert.Alert如果你触发了某个时间,弹出了对话框,可以调用下述方法获得对话框:
alert = driver.switch_to_alert(),然后可以调用下述方法:accept():确定
dismiss():关闭对话框
send_keys():传入值
text():获得对话框文本

4)页面前进,后退,切换

driver.switch_to_window(driver.window_handles[1])#切换窗口
driver.forward() #前进
driver.back() # 后退
#打印当前url
print(driver.current_url)

5) 页面截图

driver.save_screenshot(“截图.png”)

6)设置代理

# 设置代理
from selenium import webdriver
options.add_argument("--proxy-server=http://101.37.118.54:8888")
driver_path = r'D:/chromedriver/chromedriver.exe'
driver = webdriver.Chrome(executable_path=driver_path,options=options)
driver.get("http://httpbin.org/ip")

7) 页面等待

现在的网页越来越多采用了 Ajax技术,这样程序便不能确定何时某个元素完全
加载出来了。如果实际页面等待时间过长导致某个dom元素还没出来,但是你的
代码直接使用了这个WebElement,那么就会抛出NullPointer的异常。

为了避免这种元素定位困难而且会提高产生 ElementNotVisibleException的概率。
所以 Selenium 提供了两种等待方式,一种是隐式等待,一种是显式等待。

显式等待:

显式等待指定某个条件,然后设置最长等待时间。如果在这个时间还没有
找到元素,那么便会抛出异常了。

from selenium import webdriver
from selenium.webdriver.common.by import By
#WebDriverWait 库,负责循环等待from selenium.webdriver.support.ui import WebDriverWait
#expected_conditions 类,负责条件出发from selenium.webdriver.support import expected_conditions as ECdriver = webdriver.PhantomJS()
driver.get("http://www.xxxxx.com/loading")
try:# 每隔10秒查找页面元素 id="myDynamicElement",直到出现则返回element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "myDynamicElement")))
finally:driver.quit()

如果不写参数,程序默认会 0.5s 调用一次来查看元素是否已经生成,
如果本来元素就是存在的,那么会立即返回。

下面是一些内置的等待条件,你可以直接调用这些条件,而不用自己
写某些等待条件了。

title_is
title_contains
presence_of_element_located
visibility_of_element_located
visibility_of
presence_of_all_elements_located
text_to_be_present_in_element
text_to_be_present_in_element_value
frame_to_be_available_and_switch_to_it
invisibility_of_element_located
element_to_be_clickable – it is Displayed and Enabled.
staleness_of
element_to_be_selected
element_located_to_be_selected
element_selection_state_to_be
element_located_selection_state_to_be
alert_is_present

隐式等待:

隐式等待比较简单,就是简单地设置一个等待时间,单位为秒。

from selenium import webdriverdriver = webdriver.PhantomJS()
driver.implicitly_wait(10) # seconds
driver.get("http://www.xxxxx.com/loading")
myDynamicElement = driver.find_element_by_id("myDynamicElement")

当然如果不设置,默认等待时间为0。

8).执行JS语句

driver.execute_script(js语句)
#比如滚动到底部:
js = document.body.scrollTop=10000
driver.execute_script(js)

9).补充

 # 找到“嵌套”的iframe
iframe = driver.find_element_by_xpath('//iframe')    # 切换到iframe
driver.switch_to.frame(iframe)     # 切换到iframe
获取当前url
driver.current_url
获取元素标签的内容(文本信息):
get_attribute(‘textContent’)获取元素内的全部HTML:get_attribute('innerHTML')获取包含选中元素的HTML:get_attribute('outerHTML')

参考:https://blog.csdn.net/coder_pig/article/details/79015632

Selenium 常用函数总结相关推荐

  1. Appium——api常用函数

    appium常用函数介绍: 获取页面信息: 1. def get_current_activity(cls, driver): ''' 获取当前页面的activity :param driver: : ...

  2. php内置常用函数是哪些,PHP常用函数有哪些

    PHP常用函数有哪些 导语:PHP主要通过函数实现一些功能,那PHP常用函数有哪些呢?下面就由小编为大家介绍一下,欢迎大家阅读! 数学函数 1.abs(): 求绝对值 $abs = abs(-4.2) ...

  3. Lua基本语法-书写规范以及自带常用函数

    Lua基本语法-书写规范和常用函数 本文提供全流程,中文翻译. Chinar坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 String O ...

  4. SQLserver 常用函数适用方法(转载)

    SQL Server 常用函数使用方法(持续更新) 之前就想要把一些 SQL 的常用函数记录下来,不过一直没有实行...嘿嘿... 直到今天用到substring()这个函数,C# 里面这个方法起始值 ...

  5. python Pool常用函数用法总结

    在本篇内容里小编给大家整理的是一篇关于python Pool常用函数用法总结内容,有需要的朋友们可以学习下. 1.说明 apply_async(func[,args[,kwds]):使用非堵塞调用fu ...

  6. ACM——常用函数总结

    常用函数总结: 一.全排列:next_permutation 二.读写优化 三.返回容器内最大最小值 四.复制函数 五.容器删除函数 六.容器填充函数 七.查找函数 八.字符串转换整数 九.欧拉筛 十 ...

  7. e class connect.php,剖析帝国CMS核心文件e/class/connect.php中的常用函数

    帝国CMS下的e/class/connect.php文件中包含了帝国CMS常用的一些核心功能函数,加深对connect.php文件中常用函数的了解对于帝国CMS的二次开发来说非常重要. 现将帝国CMS ...

  8. PHP访问mysql的常用函数,PHP操作MySQL数据库常用函数

    PHP操作MySQL数据库常用函数 php操作mysql数据库,俗称天龙八步: 第一步:连接数据库 第二步:判断连接错误 第三步:选择数据库 第四步:设置字符集 第五步:准备SQL语句 第六步:执行并 ...

  9. python math库常用函数_Python math库常用函数

    math库常用函数及举例: 注意:使用math库前,用import导入该库 >>> import math 取大于等于x的最小的整数值,如果x是一个整数,则返回x >>& ...

最新文章

  1. HDU-1459.非常可乐(BFS )
  2. PSM-省电模式(PowerSaving Mode)
  3. Java中的nextInt()和next()与nextLine()区别详解
  4. swift - 根试图控制器的手势返回冲突 - push 新的tabbar控制器手势冲突
  5. 纽约首次尝试在大桥上识别车内司机面孔 失败得很彻底
  6. windows mysql导入sql文件
  7. spring下配置dbcp,c3p0,proxool
  8. Asp.net页面生命周期详解任我行(1)-小试牛刀,编写页面代码
  9. VMware下载(官网)
  10. Linux vi 命令创建,Linux vi命令 创建文件
  11. c语言斐波那契数列_Day 7:斐波那契数列
  12. C++ 超级玛丽制作揭秘(包含完整源文件与文档)
  13. ORA-01045:user C##KD lacks CREATE SESSION privilege;logon denied
  14. Fibo Rule规则引擎可视化
  15. 使用Javascript实现Dropdownlist级联操作中遇到的两个错误
  16. 关于grafana的界面操作展示loki
  17. OpenCV学习笔记(六)—— OpenCV for Android打开相机
  18. pandas数据分析读书笔记(三)
  19. ACL 2021 | ChineseBERT:香侬科技提出融合字形与拼音信息的中文预训练模型
  20. 输入6名学生的学号,姓名和三门课程的成绩,三门课程的名称:(programming,databse,network)。。。。。。。

热门文章

  1. Python之wordcloud库(手把手教)
  2. Android源码目录结构,已获千赞
  3. centOS7, nginx 502 bad gateway
  4. ubuntu的Files资源管理器打不开解决方案
  5. echarts3的简单实践(饼图、柱形图、折线图、地图+散点图)
  6. vue谷歌地图聚合功能
  7. nginx入门demo
  8. python的接口自动化测试
  9. 商标科普 | 商标注册前必懂的这些事
  10. MapReduce[博学谷IT技术支持]