浏览器

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. 华为云计算IE面试笔记-Fusionsphere架构及组件介绍(服务器虚拟化解决方案)

    eDSK   最上层则是eDSK是我们FusionSphere服务器虚拟化解决方案中的虚拟化北向统一API接口,其他的第三方系统或者是其他运营平台(FC.VMware等)可以通过eDSK轻松完成无缝对 ...

  2. NOI.AC#2144-子串【SAM,倍增】

    正题 题目链接:http://noi.ac/problem/2144 题目大意 给出一个字符串\(s\)和一个序列\(a\).将字符串\(s\)的所有本质不同子串降序排序后,求有多少个区间\([l,r ...

  3. Superedge的新特性和未来之路

    作者 王冬,腾讯云高级研发工程师,专注于Kubernetes.容器等云原生领域,SuperEdge 核心开发人员,现负责腾讯云边缘容器TKE Edge私有化相关工作. 背景 2021年9月27号,,在 ...

  4. OpenStack创建Win10实例

    直接用Windows的iso文件创建实例是创建不出来的,需要先在kvm下创建qcow2格式的虚拟机,然后用已经创建好的虚拟机文件当做OpenStack的镜像来创建实例就好了. 首先第一点是需要有一台L ...

  5. webstorm 修改端口号

    webstorm 修改端口号:   至此,点击下方 [apply],端口号修改完成.

  6. 运行WampServer提示计算机中丢失 msvcr110.dll

    ​ 在第一次运行WampServer的时候,出现"无法启动此程序,因为计算机中丢失 MSVCR110.dll.尝试重新安装该程序以解决此问题. ​ 在浏览器的地址栏里输入 http://ww ...

  7. Java基础之(四):使用IDEA实现HelloWorld

    使用IDEA实现HelloWorld 在使用IDEA这个集成开发环境写Java程序之前,我们要先对IDEA进行一些基本的配置,以便我们能够更好地使用它. 新建一个空项目,用来学习基础语法 设置项目名称 ...

  8. 小白自制Linux开发板 番外篇 一 modprobe加载驱动问题(转载整理)

    使用modprobe加载驱动 转载地址:https://blog.csdn.net/qq_39101111/article/details/78773362 前面我们提到,modprobe并不需要指定 ...

  9. PublishFolderCleaner 让你的 dotnet 应用发布文件夹更加整洁

    大家都知道,在 dotnet 发布时,将会在输出的 publish 文件夹包含所需的依赖.在 .NET Core 开始,引入了 AppHost 的概念,即使是单个程序集,也需要独立的 Exe 可执行文 ...

  10. 浏览器有别_HTTP报文的回车换行

    本来以为浏览器HTTP报文的生成应该是完全一致的.但最近在做一个项目的时候,发现Safari和Chrome提交同一份表单,后端的处理结果不一致.看提交结果呢,是因为Safari多了个回车.由于原项目的 ...