zoukankan      html  css  js  c++  java
  • 学习元素定位

    selenium 原理?

    用python和java都可以写

    通过插件写一些代码和脚本操作浏览器,会通过selenium  翻译器把脚本翻译成,selenium core 这种json 格式数据报文, 并且发给远端的浏览器

    因为浏览器厂商,火狐和谷歌有一套特殊自动定制机制,会生成js 操作后,返回一个结果给 selenium core 在返回给你的脚本 

    这套流程翻译的数据的格式和过程符合webdriver协议   

    想要定位元素,首先你要知道你要找到元素!!!!!!!!!!!!!!!!

    driver.find 有一系列的方法就是寻找的方法

    因为查询元素的方式不一样,driver.find方法也不一样 

    第一你基本的逻辑思想怎么去思考?????????

    先要懂概念,有了概念才能去操作

    元素,对象,控件  (比如一些按钮)的前提了解?????

    html<input id='a' name='b'>xxxxx</input>

    1.标签名称和元素类型  input   可以理解html<input id='a' name='b'></input>  是一个元素,对象,控件  里面的内容是文本值 

    也叫text

    2.再比如<button>登录</button>

    button 是个按钮,为什么button按钮为什么有一个text ,这个text是给用户看的,button是元素的标签名称 

    3. 属性id 是唯一 的, name 属性呢啥意思??(提交给服务器的名称)

    class属性(这个属性是给元素进行分类的样式)class重复性很高

    一般定位方法(有id用id ,没有id用name,如果也没有用calss,或者取text值,如果都找不到,需要使用特殊上下级关系的复杂语句 xpath)

    4.操作链接 a标签 可以定位链接的文本字  

     这种使用text值保证他不重复

    5.如果都找不到,需要使用特殊上下级关系的复杂语句 xpath 

    常见的元素类型????????

    input输入域  根据输入域的type类型的不同长的不一样 

    button按钮 

    select 下拉列表   现在好多不用了

    ul         列表

    a         超链接

    image 图片

    table  表格

    form  表单 

    div     块元素

    文本  p段落  span短文本 同行 

     滚动屏幕到底部的两种方法??????

    第一种

    from selenium.webdriver.common.action_chains import ActionChains as ac

    driver.execute_script('window.scrollTo(0,5000)')#滚动屏幕
    ac=ActionChains(driver)
    第二种
    driver.execute_script('window.scrollTo(0,3000)') js方法

    取值类操作,只有两种方法????取元素和取文本值?????

    1.获取文本值     driver.find_element_by_id('readme').text

    2.获取属性值    driver.find_element_by_class_name('baidu').get_attribute('href')

     如果你想打开一个新窗口覆盖旧的窗口,不想开多个窗口,怎么防止新窗口不弹出???

    link=driver.find_element_by_class_name('baidu').get_attribute('href')
    driver.get(link)
    time.sleep(2) 预期只打开新窗口,旧窗口自动关
    下拉框的操作???????????????????????????

    单独的控制操作,需要注意 操作前from selenium.webdriver.support.select import Select 这行代码ctrl +webdriver 放到这个类下

    elenent=driver.find_element_by_name('select')#把下拉列表对象
    select=Select(elenent)#创建对象
    # select.select_by_index()#取下拉的下标
    select.select_by_value('1')#最靠谱
    time.sleep(2)
    driver.maximize_window()
    select.select_by_value('2')#最靠谱
    # select.select_by_visible_text()#最不靠谱取值,文本内容

     循环选择下拉框所有内容????????

    for i  in range(0,len(select.options)):
    select.select_by_index(i)
    time.sleep(2)
    连续动作的操作????
    from selenium.webdriver.common.action_chains import ActionChains  前提导入语句 

    driver.execute_script('window.scrollTo(0,1000)')#滚动屏幕
    ac=ActionChains(driver)
    #拖动鼠标到某个按钮
    ac.move_to_element(driver.find_element_by_class_name("over"))#焦点移动到那个元素
    ac.perform()#动作回放表演
    双击操作??????????
    import time
    from selenium.webdriver.support.select import Select
    from selenium.webdriver.common.action_chains import ActionChains
    from selenium import webdriver
    driver = webdriver.Chrome()
    driver.get('file:///G:/a-%E5%88%98%E6%B3%BD%E8%80%81%E5%B8%88%E8%A7%86%E9%A2%91/ui%E8%87%AA%E5%8A%A8%E5%8C%96/ui%E8%87%AA%E5%8A%A8%E5%8C%96/demo.html')
    time.sleep(2)
    driver.execute_script('window.scrollTo(0,1000)')#滚动屏幕
    ac=ActionChains(driver)
    #拖动鼠标到某个按钮 点击某个位置触发
    ac.move_to_element(driver.find_element_by_class_name("over"))#焦点移动到那个元素
    ac.perform()#动作回放表演
    time.sleep(2)
    ac.double_click(driver.find_element_by_class_name('double'))#双击
    ac.perform()#动作回放表演
    拖拽的操作????????????????????????比如把一个位置从左滑到右
    ac.drag_and_drop(driver.find_element_by_xpath("//div[@id='slider']/span"),
    driver.find_element_by_id("slider_confirm"))
    ac.perform()




  • 相关阅读:
    代码中的TODO FIXME XXX 等注释释义
    [转]Linux环境下段错误的产生原因及调试方法小结
    linux 的date命令及系统时间设置
    声明和定义
    [转]关于fork的一个面试题
    [转]头文件定义全局变量等问题
    jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
    ActiveX
    10个免费的javascript富文本编辑器(jQuery and nonjQuery)
    <推荐>65个以自然风光为背景的UI设计
  • 原文地址:https://www.cnblogs.com/weilemeizi/p/15138475.html
Copyright © 2011-2022 走看看