其他分享
首页 > 其他分享> > selenium知识

selenium知识

作者:互联网

***

自动化:

   自动化的目的不是为了发现bug

   版本不稳定不能做自动化

   不是所有功能系统都适合做自动化

***

什么项目适合做自动化测试?

需求稳定,不会频繁变更

研发和测试周期长,需要频繁执行回归测试

需要在多种平台上重复运行相同测试的场景

某些测试项目通过手工测试无法实现,或者手工成本太高

被测软件的开发较为规范,能够保证系统的可测试性

****

 定位方式:

    dd.find_element_by_id("html标签的id属性值")

    ................by_name("html标签的name属性值")

    ................by_css_selector("html标签的css样式选择器")

    ................by_xpath("html标签的路径")

    ................by_link_text("html标签超链接标签内容")

    ...............by_partial_link_text("html标签超链接标签部分但必须是唯一且连续的内容")

    ................by_class_name("html标签的class属性值")【了解】

    ................by_tag_name("html标签的标签名")【了解】

 

 常用操作:

   文本框,密码框,文本域:

      清空:

          dd.find_element_by_....("....").clear()

      输入:

          dd.find_element_by_.....("....").send_keys("输入内容")  

  

   单选按钮,复选框,按钮:

       点击:

           dd.find_element_by_......("....").click()

 

   下拉框:

       选择:Select需要导入

          Select(定位到的一个具体的下拉框).select_by_visible_text("option标签内容")

          ........................................................select_by_index(option标签索引位置)

          ........................................................select_by_value("option的value属性值")

 

    隐式等待:

       dd.implicitly_wait(时间秒):如果页面没有加载完成最多等待时间

   强制等待时间:

      Time.sleep(3)

 

dd=webdriver.Firefox() #打开浏览器

dd.get(url):打开url对应页面

 

 定位方式:(注意element后有s)

    dd.find_elements_by_id("html标签的id属性值")

    .................by_name("html标签的name属性值")

    .................by_css_selector("html标签的css样式选择器")

    .................by_xpath("html标签的路径")

    .................by_link_text("html标签超链接标签内容")

    .................by_class_name("html标签的class属性值")【了解】

    .................by_tag_name("html标签的标签名")【了解】

 

一次定位到多个页面控件,返回list类型,每个元素都是一个具体的页面控件

 

 切换焦点到弹出框:

    dd.switch_to_alert().dismiss():切焦点到弹出框,点击取消

    dd.switch_to_alert().accept():切焦点到弹出框,点击确定

    dd.switch_to.alert()

 

实际结果的获取方式:  用于断言

页面标题:dd.title

self.assertEqual("登录-然之协同",self.d.title) 

    标签内容:定位到标签.text

st=self.d.find_element_by_xpath("html/body/div[2]/div/div/div[1]/div").text

self.assertEqual("登录失败,请检查您的成员名或密码是否填写正确。",st)

弹出框提示信息: dd.switch_to_alert().text

   

切换焦点到frame/iframe:  两种写法

       dd.switch_to_frame("frame的id/name属性值")

       dd.switch_to.frame("frame的id/name属性值")

 

切焦点回到默认

# driver.switch_to_default_content()

# driver.switch_to.default_content()

 

复选框:    

   定位到一个具体的复选框.is_selected():返回是否被选择,如果是返回True,否则返回False

                         .is_enabled():用于存储input、select等元素的可编辑状态,可以编辑返回true,否则返回false
.is_displayed():这里的存在不是肉眼看到的存在,而是html代码的存在。某些情况元素的visibility为hidden或者display属性为none,我们在页面看不到但是实际是存在页面的一些元素

 

常用浏览器操作:

  dd.window_handles: 返回打开浏览器窗口标识,list类型,每个元素都是一个具体的浏览器标识

  切焦点到弹出窗口:

    dd.switch_to_window(具体窗口标识)

 

  dd.back():后退

  dd.forward():前进

  dd.refresh():刷新

  dd.close():关闭当前窗口

  dd.quit():关闭所有窗口

 

常用键盘操作:

   定位到一个文件框.send_keys(Keys.ENTER): Enter回车键

   ..........................(Keys.CONTROL,"a") 全选

   ..........................(Keys.CONTROL,"c") 复制

   ..........................(Keys.CONTROL,"v") 粘贴

   ..........................(Keys.CONTROL,"x") 剪切

   ..........................(Keys.BACK_SPACE) Backspace回删键

 

常用鼠标操作:

  #左键

 ActionChains(dd).click(定位到的一个具体的页面控件).perform()

#右键

  ActionChains(dd).context_click(定位到的一个具体的页面控件).perform()

  双击

  ActionChains(dd).double_click(定位到的一个具体的页面控件).perform()

  光标悬浮、悬停

  ActionChains(dd).move_to_element(定位到的一个具体的页面控件).perform()

#拖拽到某个坐标后松开

ActionChains(dd).drag_and_hold_by_offset(元素,x坐标,y坐标).perform()

#移动到距某个元素多少距离的位置

ActionChains(dd).move_to_element_with_offset(元素一,x坐标,y坐标).perform()

#拖拽到某个元素后松开

ActionChains(dd).drag_and_hold(元素一,元素二).perform()

下面三个可以组合使用------可用于拖动验证码

#按住不放

ActionChains(dd).click_and_hold(定位到的一个具体的页面控件).perform()

  #鼠标移动到当前坐标位置

ActionChains(dd).move_by_offset(x坐标,y坐标).perform()

#在某个元素位置松开左键

ActionChains(dd).release (定位到的一个具体的页面控件).perform()

滚动条:

  滚动条拖动到最下

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

  dd.execute_script(js)

  滚动条拖动到最上

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

  dd.execute_script(js)

若浏览器为chrome

js = “var q=document.body.scrollTop=0”
driver.execute_script(js)

浏览器安装在非默认路径下:

  1:找到浏览器profile文件路径

     rr=r"C:\Users\Administrator\AppData\Local\Mozilla\Firefox\Profiles\h8m1kt8z.default"

  2:profile=webdriver.FirefoxProfile(rr)

  3:dd=webdriver.Firefox(profile)

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

 

非Firefox浏览器:

   1.浏览器驱动放在c:/python34/下

   2:

      webdriver.Ie()

      webdriver.Chrome()

标签:name,ActionChains,标签,dd,知识,selenium,html,页面
来源: https://www.cnblogs.com/bokeyuan4778/p/13970744.html