selenium+python自动化测试(二)

1. 浏览器操作

 1、控制浏览器窗口大小

  driver.set_window_size(800,800)  # 设置浏览器窗口大小

  driver.maximize_window()  # 设置浏览器最大化

 2、控制浏览器后退、前进、刷新

      second_url = 'http://news.baidu.com/'

      driver.get(second_url)  # 访问第二个页面

      driver.back()              # 浏览器 返回(后退)

      driver.forward()        #浏览器前进 

      driver.refresh()       #浏览器刷新

      driver.quit()            #浏览器退出

  3. 操作暂停

import time

     time.sleep(5) # 显示等待5s

 4. 浏览器滚动

  js = "var q=document.documentElement.scrollTop=10000"

  driver.execute_script(js)

  time.sleep(5)         #  鼠标滚动到底部

  js = "var q=document.documentElement.scrollTop=0"

  driver.execute_script(js)   # 然后滚动到上面

2. 元素操作

1. 文本框简单操作

 click() 单击、clear()清空、send_keys()文本框输入、submit()提交表单,模拟回车操作

 driver.find_element_by_id("xxx").clear()

 driver.find_element_by_id("xxx").send_keys("username")

    driver.find_element_by_id("xxx").click() 

2. 鼠标事件

ActionChains 类提供的鼠标操作的常用方法: perform() 执行所有 ActionChains 中存储的行为

context_click() 右击              double_click() 双击            

move_to_element() 鼠标悬停     drag_and_drop() 拖动  

  ActionChains(driver).context_click(element1).perform()

   ActionChains(driver).double_click(element1).perform()

   ActionChains(driver).move_to_element(element1).perform()

  element = driver.find_element_by_name("xxx")#定位元素的源位置  

  target = driver.find_element_by_name("xxx")#定位元素要移动到的目标位置

   ActionChains(driver).drag_and_drop(element,target).perform()#执行元素的拖放操作

3. 键盘事件

在使用键盘按键方法前需要先导入 keys 类包。

from selenium.webdriver.common.keys import Keys  #引入 Keys 模块

driver = webdriver.Firefox()

driver.get("http://www.baidu.com")

driver.find_element_by_id("kw").send_keys("seleniumm") #输入框输入内容

driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)  #删除多输入的一个 m

driver.find_element_by_id("kw").send_keys(Keys.SPACE) #输入空格键

driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')#ctrl+a 全选输入框内容

driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')#ctrl+x 剪切输入框内容

driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'v')#ctrl+v 粘贴内容到输入框

driver.find_element_by_id("su").send_keys(Keys.ENTER)#通过回车键盘来代替点击操作

4.单选复选框操作

(1).单选: radio

 首先是定位选择框的位置,定位 id,点击就可以了 ,即可完成单选的选择。

    driver.find_element_by_id("xxx").click()

(2).复选框: checkbox

  勾选单个框,比如勾选 selenium 这个,可以根据它的 id=c1 直接定位到点击就可以了

  全部勾选,可以用到定位一组元素,从上面源码可以看出,复选框的type=checkbox,这里可以用 xpath 语法: .//*[@type='checkbox']

       这里注意,敲黑板做笔记了: find_elements 是不能直接点击的,它是复数的,所以只能先获取到所有的 checkbox 对象,然后通过 for 循环去一个个点击操作判断是否选中: is_selected()

from selenium import webdriver

driver = webdriver.Firefox()

driver.get("file:///C:/Users/Gloria/Desktop/checkbox.html")

s = driver.find_element_by_id("boy").is_selected() # 没点击操作前,判断选项框状态

print s

driver.find_element_by_id("boy").click() # 点击后元素

r = driver.find_element_by_id("boy").is_selected() # 点击后,判断元素是否为选中状态

print r

driver.find_element_by_id("c1").click()# 复选框单选

checkboxs = driver.find_elements_by_xpath(".//*[@type='checkbox']") # 复选框全选

for i in checkboxs:

   i.click()

5.select下拉框操作

(1).二次定位

  1.定位 select 里的选项有多种方式,这里先介绍一种简单的方法:二次定位

  2.基本思路,先定位 select 框,再定位 select 里的选项

  s = driver.find_element_by_id('xxx')  # 分两步:先定位下拉框,再点击选项

  s.find_element_by_xpath("//option[@value='50']").click()

  还有另外一种写法也是可以的,把最下面两步合并成为一步:

  driver.find_element_by_id("nr").find_element_by_xpath("//option[@value='50']").click()

 ( 2).直接定位

  通过xpath或是css一次性直接定位到 option 上的内容

  driver.find.element_by_xpath(".//*[@id='xxx']/option[2]").click()

  (3).通过索引定位

  from selenium.webdriver.support.select import Select   # 导入 select 模块 Select类

  select_by_index()  #通过索引定位

       select_by_index(2)  #(从 0 开始计数)如选择第三个选项:

  s = driver.find_element_by_id('xxx')

  Select(s).select_by_index(2)

  select_by_value()  #通过 value 值定位  select_by_value("1")

6. 文件上传

F12查看源代码,看文件属性如果是input属性

<input id="file_name" class="text-1 w255" type="text" readonly="" value="" data-file=""/>

直接 send_keys(“文件地址”)

file=driver.find_element_by_name("files")

file.send_keys("C:\\Users\\Administrator\\Pictures\\Saved Pictures\\hello.jpg")

但有的研发的同学做成了 readonly 属性的input 需要另外的方法

https://www.cnblogs.com/BlueSkyyj/p/7523844.html

3. 元素定位

selenium共有八种元素定位的方法,分别为id、name、class、tag、link、partial_link、xpath及css。


id


name


class_name

从元素属性可以分析出,有个href = "http://www.hao123.com,说明它是个超链接,对于这种元素,可以用以下方法

link

有时候一个超链接它的字符串可能比较长,如果输入全称的话,会显示很长,这时候可以用一模糊匹配方式,截取其中一部分字符串就可以了,如“hao123”,只需输入“ao123”也可以定位到。


partial_link

xpath即为XML路径语言,一种元素定位方法,就是查找元素的路径,基本格式为://*[@+元素],可以通过元素的id、name、class这些属性定位,如下图



xpath

css:

  1.css可以通过元素的id、class、tag这三个常规属性直接定位到

  2.如下是百度输入框的的html代码:

<input id="kw" class="s_ipt" type="text" autocomplete="off" maxlength="100" name="wd"/>

  3.css用#号表示id属性,如:#kw

  4.css用.表示class属性,如:.s_ipt

  5.css直接用标签名称,无任何标示符,如:input


css
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容