浏览器

1.火狐浏览器

br = webdriver.Firefox()
#最大化窗口
br.maximize_window()
br.get('http://baidu.com')

  

2.谷歌浏览器

br = webdriver.Chrome()
#最大化窗口
br.maximize_window()
br.get('http://baidu.com')

  

3.谷歌浏览器并且设置指定的下载目录,后面断言是否下载到本地

options=webdriver.ChromeOptions()
path=os.path.abspath("..")#表示当前所处的文件夹上一级文件夹的绝对路径
filepath=path+"\\PullFile"
prefs={'profile.default_content_settings.popups':0,'download.default_directory':filepath}
options.add_experimental_option('prefs',prefs) br=webdriver.Chrome(chrome_options=options)
br.maximize_window()
br.get(http://www.baidu.com)

  

4.PhantomJS浏览器,无界面的执行用例~

br = webdriver.PhantomJS()
br.maximize_window()
br.get("http://www.baidu.com")

  

4.1 谷歌无头浏览器,相当于PhantomJS

            chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-gpu')
driver=webdriver.Chrome(chrome_options=chrome_options)
driver.maximize_window()

  

操作

1.点击动作

driver.find_element_by_id(Location_element).click()
driver.find_element_by_name(Location_element).click()
driver.find_element_by_xpath(Location_element).click()
driver.find_element_by_css_selector(Location_element).click()

2.输入动作,也可以作为上传文件使用

driver.find_element_by_id(Location_element).send_keys(Input_content)
driver.find_element_by_name(Location_element).send_keys(Input_content)
driver.find_element_by_xpath(Location_element).send_keys(Input_content)
driver.find_element_by_css_selector(Location_element).send_keys(Input_content)

 

3.选择select下拉框的值, Input_content给下拉框option的value值

Select(driver.find_element_by_xpath(Location_element)).select_by_value(Input_content)
Select(driver.find_element_by_name(Location_element)).select_by_value(Input_content)
Select(driver.find_element_by_id(Location_element)).select_by_value(Input_content)
Select(driver.find_element_by_css_selector(Location_element)).select_by_value(Input_content)

  

4.强制等待

time.sleep(2)

  

5.智能等待,一直等元素出来再操作, 30是设置的超时时间

driver.implicitly_wait(30)

  

6.悬浮操作

_ele_key = driver.find_element_by_id(Location_element)  #目标元素
ActionChains(driver).move_to_element(_ele_key).perform() #悬浮 _ele_key = driver.find_element_by_name(Location_element) #目标元素
ActionChains(driver).move_to_element(_ele_key).perform() #悬浮 _ele_key = driver.find_element_by_xpath(Location_element) #目标元素
ActionChains(driver).move_to_element(_ele_key).perform() #悬浮 _ele_key = driver.find_element_by_css_selector(Location_element)#目标元素
ActionChains(driver).move_to_element(_ele_key).perform()#悬浮

  

7.js弹窗确认/取消/输入值确认或取消

        #  js弹窗确认/取消/输入值确认或取消   Location_element指定义的操作,Input_content指需要输入的文本
def _prompts_js_key(self,driver,Location_element, Input_content): # 拿到页面alert
dialog_box = driver.switch_to_alert()
time.sleep(2)
# 这个判断给需要输入的提示框
if Location_element == u'确认' and Input_content != '':
text = str(Input_content)
dialog_box.send_keys(Input_content)
time.sleep(2)
dialog_box.accept()
time.sleep(2) if Location_element == u'取消' and Input_content != '':
dialog_box.dismiss()
time.sleep(2) #这两个判断是单纯只有确认 取消或确认的提示床
elif Location_element == u'确认' and Input_content == '':
dialog_box.accept()
time.sleep(2) elif Location_element == u'取消' and Input_content == '':
dialog_box.dismiss()
time.sleep(2) else:
pass

  

8.Autoit通过执行exe上传文件

paths=test._Autoit_file(exe_path)
time.sleep(1)
os.system(paths)
time.sleep(1)

  

9.切入iframe  #给iframe的元素(支持id name xpath...)

time.sleep(1)
driver.switch_to.frame(driver.find_element_by_xpath(Location_element)) #给iframe的元素
time.sleep(1)

  

10.切出iframe

driver.switch_to_default_content()

 

11.断言 预期和实际对比下

        def _find_value_key(self,driver,Positioning_mode,Location_element,Input_content,output):

            if Positioning_mode == self.Location_xpath:
#取实际元素的值
value = driver.find_element_by_xpath(Location_element).text
value = value.encode("utf-8")
value = str(value)
# text=str(text)
test=StringManipulation
Input_content = test._filter_value(Input_content) if isinstance(Input_content, int):
Input_content = str(Input_content)
Input_content = Input_content + 'X'
value = value + 'X' if isinstance(Input_content, float):
Input_content = str(Input_content)
Input_content = Input_content + 'X'
value = value + 'X' text = Input_content.encode("utf-8")
text = str(text) if value == text:
print(output,"-----TRUE")
ActualResults=('True')
return ActualResults
else:
print '--------------------------------------'
print ('预期结果',text)
print ('实际结果',value)
print('')
print ('实际结果和预期不匹配')
print '--------------------------------------'
driver.quit()
ActualResults='False'
return ActualResults
else:
print("find目前只用xpath定位方式")

  

12.回车操作

driver.find_element_by_id(Location_element).send_keys(Keys.ENTER)

  

13.清除文本框值操作

driver.find_element_by_id(Location_element).clear()

  

14.写个方法,在下载文件后,判断又没有下载到本地

# 得到目录文件
def file_name(self, file_dir):
for root, dirs, name in os.walk(file_dir):
return name # 查看是否有文件
def list_none(self, value):
if value:
return 'True'
else:
return 'False' # 断言是否下载文件成功
def find_file_key(self,driver,output): test_exc=StringManipulation._pull_file() files = self.file_name(test_exc)
list_value = self.list_none(files) if list_value == 'True': filename = test_exc + files[0]
os.remove(filename)
print(output,"-----TRUE")
ActualRresults='True'
print '下载成功,文件名是', files[0], '因为需要初始化,正在删除此文件.....'
return ActualRresults else:
print '指定的目录没有查询到下载的文件' ActualResults='False'
driver.quit()
return ActualResults

  

15.当时间选择框不可输入,那么改下js的写进去

        # 当时间控件不可输入时,需要用js去除removeAttribute属性再把值写进去
#Positioning_mode==定位方式,Location_element==元素,Input_content输入内容(时间)
def _time_js_input(self,driver,Positioning_mode,Location_element,Input_content): time.sleep(1)
elements=r"'"+Location_element+"'"
if Positioning_mode==self.Location_id:
jsa = "document.getElementById("+elements+").removeAttribute('readonly')"
driver.execute_script(jsa)
if isinstance(Input_content,float):
Input_content=int(Input_content)
Input_content=str(Input_content)
driver.find_element_by_id(Location_element).send_keys(Input_content)
time.sleep(1)
else:
driver.find_element_by_id(Location_element).send_keys(Input_content)
time.sleep(1)
else:
print('对于时间空间暂时先写id方法,后面用到其他在Underlyingkeyword.py维护')

  

后续有其他操作再补吧~

[python]selenium常用的操作的更多相关文章

  1. python 历险记(三)— python 的常用文件操作

    目录 前言 文件 什么是文件? 如何在 python 中打开文件? python 文件对象有哪些属性? 如何读文件? read() readline() 如何写文件? 如何操作文件和目录? 强大的 o ...

  2. Python之常用文件操作

    Python之常用文件操作

  3. selenium常用命令--操作页面元素及获取元素内容整理

    selenium常用命令之操作页面元素及获取元素内容的事件整理 例子:  /**id <input type="text" id="phone" name ...

  4. selenium - 常用元素操作

    # 3.常用元素操作 # 元素对象的获取ele = driver.find_element_by_XXX('定位表达式') # 获取元素的文本内容(返回值为元素的文本)ele.text # 获取元素的 ...

  5. selenium - 常用页面操作

    # 2.常用页面操作 # 访问某一个页面url = 'http://www.baidu.com'driver.get(url) # 获取页面的标题title = driver.titleprint(t ...

  6. python selenium常用基本方法---H5和键盘鼠标操作

    一.模拟手机打开页面(H5测试) from selenium import webdriver mobile_emulation = {'deviceName':'iPhone X'} options ...

  7. python selenium鼠标键盘操作(ActionChains)

    用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击.双击.点击鼠标右键.拖拽等等.而selenium给我们提供了一个类来处理这类事件--ActionChains sele ...

  8. python selenium模拟滑动操作

    selenium.webdriver提供了所有WebDriver的实现,目前支持FireFox.phantomjs.Chrome.Ie和Remote quit()方法会退出浏览器,而close()方法 ...

  9. selenium - 常用等待操作

    # 4. 等待操作 # 强制等待from time import sleepsleep(10) # 隐性等待# 设置最长等待时间,在这个时间在只要有个时间点加载完成,则执行下一步代码,比sleep智能 ...

随机推荐

  1. nginx 利用return实现301跳转

    第一种: server { location / { rewrite ^/(.*)$ http://www.baidu.com/$1 permanent; } } 第二种: server { loca ...

  2. Java对象构造

    关于对象构造的一些认识. 默认域初始化 如果在构造器中没有显示地给域赋予初值,那么就会被自动地赋予默认值:数值为0,布尔值为false,对象引用为null.然而,这显然是不安全的,在一个null引用上 ...

  3. centos实现免密登陆及远程操作

    ----------------------------**********------------------------------------------------- 免密码登陆 第一步: 执 ...

  4. python 建站教程

    主端:安装nginx uwsgi django pymysql mysql安装mysql到http://repo.mysql.com/里面找 mysql57-community-release-el7 ...

  5. 鸿蒙内核源码分析(文件句柄篇) | 深挖应用操作文件的细节 | 百篇博客分析OpenHarmony源码 | v69.01

    百篇博客系列篇.本篇为: v69.xx 鸿蒙内核源码分析(文件句柄篇) | 深挖应用操作文件的细节 | 51.c.h.o 文件系统相关篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么说 ...

  6. CF444C-DZY Loves Colors【线段树,set】

    正题 题目链接:https://www.luogu.com.cn/problem/CF444C 题目大意 \(n\)个物品第\(i\)个颜色为\(i\),权值为\(0\).要求支持\(m\)次操作 给 ...

  7. C++学习笔记:07 类的继承与派生

    课程<C++语言程序设计进阶>清华大学 郑莉老师) 基本概念 继承与派生的区别: 继承:保持已有类的特性而构造新类的过程称为继承. 派生:在已有类的基础上新增自己的特性(函数方法.数据成员 ...

  8. mapboxgl 纠偏百度地图

    缘起 之前分享了mapboxgl 互联网地图纠偏插件,插件当时只集成了高德地图. 文章发布后,有小伙伴在后台留言,希望插件也能支持百度地图. 刚好国庆假期有时间就研究了一下. 插件加载瓦片原理 首先, ...

  9. 初识Linux shell

    目录 初识Linux shell Linux 深入探究Linux内核 系统内存管理 交换空间 页面 换出 软件程序管理 Linux中的进程 Linux系统的运行级 硬件设备管理 插入设备驱动代码的方法 ...

  10. Dapr 虚拟机集群部署 (非K8S)

    从2021-10-08号发布4小时Dapr + .NET 5 + K8S实战到今天刚刚一周时间,报名人数到了230人,QQ群人数从80人增加到了260人左右,大家对Dapr的关注度再一次得到了验证,并 ...