selenium+重点操作步骤

本文详细介绍了使用Selenium进行网页自动化测试的脚本编写步骤,包括创建浏览器对象、获取页面、操作页面及关闭页面。在操作页面部分,讲解了页面大小和位置的调整、页面切换、URL和标题的获取,以及元素的定位和操作。同时,文章还深入探讨了CSS选择器和XPath定位方法,为自动化测试提供了全面的指导。
摘要由CSDN通过智能技术生成

****重点1:脚本编写流程:4大步

    步骤1:创建浏览器对象

    步骤2:获取页面

    步骤3:操作页面

    步骤4:关闭页面

 

步骤1:1) 导入模块

        2)driver = webdriver.Firefox()---类似的操作情况

 

步骤2:1)构建url:必须包含完整的协议名:http

            例如:url = "http://www.baidu.com"

        2)通过浏览器对象打开页面:driver.get(url)

步骤3:根据操作的内容可分为两类:

        第一大类:操作页面本身

            A操作方法

                1)页面大小的操作

                    a最大化:driver.maximize_window()

                    b获取大小:driver.get_window_size()

                    c设置大小:driver.set_window_size(width, height)

                2)页面位置的操作

                    a获取位置:driver.get_window_position()

                    b设置位置:driver.set_window_position(x, y)

                3)页面切换

                    a后退:driver.back()

                    b前进:driver.forward()

                    c刷新:driver.refresh()

                    注意:需要多次调用get()方法,打开多个页面后,才可使用前进、后退的方法。

   

            B属性(与变量的用法相同)

                1)页面的url值:driver.current_url

                2)页面标题:driver.title

       

        第二大类:操作页内元素

            操作步骤:1)定位元素

                      2)操作元素

                       

            定位元素的方法:

                1. driver.find_element_by_xxx(value)

                2. from selenium.webdriver.common.by import By

                    driver.find_element(By.ID, value)   

                一、元素定位:用于完成元素定位的定位方式:一定要使用变量接收定位到的元素

                el = driver.find_element_by_xxx()

                1 通过id属性进行定位

                2 通过name属性进行定位:driver.find_element_by_name(value)

                3 通过class属性进行定位:driver.find_element_by_class_name(value)

                4 通过标签名进行定位:driver.find_element_by_tag_name(value)

                                使用条件:1 要定位的标签是该页面唯一该类标签

                                          2 要定位的标签是该类标签的第一个

                5 通过a标签文本信息定位(完整的文本):

                        driver.find_element_by_link_text()

                6 通过a标签文本信息定位(部分文本):

                        driver.find_element_by_partial_link_text()

                7 通过css规则进行定位:driver.find_element_by_css_selector()

                8 通过xpath定位:driver.find_element_by_xpath()

               

                二、元素操作:el

                    操作方向:脚本向页面传输

                        1 数据输入:el.send_keys(value)

                        2 清空:      el.clear()

                        3 点击操作:el.click()

                        4 提交:      el.submit()

                    操作方向:页面回传到脚本

                        1 获取文本:el.text

                        2 获取指定属性:el.get_attribute(name)--其中参数name是标签属性的名称

步骤四:关闭页面

    1)关闭当前页面: driver.close()

    2) 关闭全部页面:driver.quit()

 

**CSS规则

1 特定属性 标签名称

    通过id属性:#id属性值

    通过class属性:.class属性值

    标签名称

2 嵌套关系

    ,:div,p   定位到的是div和p标签

    空格:div p 属于div标签内部的(不论是子级、后代)p标签

    > :div>p   定位到p标签,父级标签是div

    + :div+p   定位到的p标签,其前一个兄弟标签是div

 

3 属性,关键字符中括号[] ---- 属性的描述形式:name = value

    [name]:定位页面中所有含有name属性名的标签

    [name = value]:定位页面name属性值为value的标签

    [name ~= value]:例如:clas = "box1 content", [class ~= "box1"]

                    定位到name属性值中包含value内容的标签

                    注意:value必须一个完整单词

    [name^=value]:定位到name属性值以value开头的标签

    [name$=value]:定位到name属性值以value结尾的标签

    [name*=value]:定位到name属性值包含value内容的标签

4 父子关系

    :only-child:例如p:only-child,要定位的标签是其父级标签的唯一子元素,且该元素无子标签

    :nth-child(n):例如:p:nth-child(1) 定位属于其父级标签中的第n个子元素

    :nth-last-child(n):定位属于其父级标签中倒数第n个子元素

   

5 元素状态

    :empty :定位无子元素、无文本的标签

    :not(标签) 反向定位,定位不包含在表达式中的其余标签

                   

------------------------------------------------------------------

xpath定位

***一、DOM:文档对象模型

    规定了HTML中内容的组织形式(标签、属性、文本)

        1 它会将文件中所有的元素都看待成节点   

        2 将所有节点组织成一棵树:根、分支、叶子,达到分层的目的

       

二、通过范例验证html文件确实是按照DOM组织的    ---dom_example.html

 

三、xpath规则

    可用元素:

        1 单斜杠'/' : 表示html文档的根位置

        2 双斜杠'//' :表示搜索文档任意位置

        3 点号'.' :表示当前位置

        4 双点'..':表示本位置的上级位置

        5 @:描述属性

    中括号[]:表示对节点的限定(可用来限定节点位置或描述属性内容或文本值)

        1 数字:例如 //p[1] 找到文件各级p标签中的第一个

        2 属性:@ 例如 //div[@id='div1'] 找到文件中id属性值为'div1'的div标签

        3 函数:

            1) last() 范例://p[last()] 查找文档中各组p标签的最后一个

            2) position() 范例: //p[position()<3] 查找文档中各组p标签中的前三个

            3) text() 范例://a[text()='inner link text'] 查找文本内容为'inner link text'的a标签

            4) starts-with() 范例://div[starts-with(@class, 'box1')] 查找文档中class属性值以box1开头的div标签

                    与CSS中[name^=attribute]作用相同

            5) contains() 范例://div[contains(@class, 'content')] 查找文档中class属性值包含content字符串的div标签

                    与CSS中[name*=attribute]作用相同

    多条件连接符号: and

                范例://div[contains(@class, 'content') and @id="div1"]

                        查找文档中class属性值包含content字符串且id属性值为div1的div标签

 

多元素定位:

1 方法:find_elements_by_xxx(value) 8种定位方式

2 方法的返回结果是列表:

        1)对列表采用循环结构,操作各个元素对象

        2)操作列表中单个元素的方式和单元素定位后的操作方式一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值