码迷,mamicode.com
首页 > 其他好文 > 详细

selenium定位方式的比较

时间:2021-03-05 12:57:53      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:运用   oss   span   rgb   find   定位器   cto   pytho   返回值   

我们知道,在selenium中,定位方式可以分为8种:
1,id定位
2,class定位
3,name定位
4,link_text定位
5,partial_link_text定位
6,tag定位
7,xpath定位
8,css定位

那么在这8种定位方式种,我们该如何取舍呢?原则如下:
原则一:如果元素有id属性,则首选id定位,因为在前端单个页面中,id是唯一的,动态id不考虑(但如今很多前端开发人员的代码书写并不规范,元素不一定拥有id属性)
原则二:尽量少用tag_name定位,因为在一个前端页面中,会有很多的重复标签名,仅靠标签名定位可能很难精确定位到想要的元素,所以tag_name定位很多时候是与其他定位方式组合使用
原则三:xpath定位功能强大,但如果最求更高的定位效率,则更推荐css定位
原则四:根据页面元素的特点,以及要定位元素的属性特点,选择相应的、合适的定位方法

拓展:在python中,有一个适合各种定位方式的方法:

    def find_element(self, by=By.ID, value=None):
        """
        Find an element given a By strategy and locator. Prefer the find_element_by_* methods when
        possible.

        :Usage:
            element = driver.find_element(By.ID, ‘foo‘)

        :rtype: WebElement
        """
        if self.w3c:
            if by == By.ID:
                by = By.CSS_SELECTOR
                value = [id="%s"] % value
            elif by == By.TAG_NAME:
                by = By.CSS_SELECTOR
            elif by == By.CLASS_NAME:
                by = By.CSS_SELECTOR
                value = ".%s" % value
            elif by == By.NAME:
                by = By.CSS_SELECTOR
                value = [name="%s"] % value
        return self.execute(Command.FIND_ELEMENT, {
            using: by,
            value: value})[value]

注意:使用该方法时,需要结合By类使用。
By类需要导入:from selenium.webdriver.common.by import By
参数:by=By.XX,如By.ID,By.LINK_TEXT等等
参数:value,对应定位方式的值,如id属性值,xpath定位器,css定位器等
返回值:WebElement对象

拓展:我们前面说过的find_element_by_id(),find_element_by_name(),find_element_by_class_name()等等定位的方法,其方法体中最终都是调用了find_element()方法。在webUI自动化中,对于元素的定位,可以对find_element(s)进行二次封装,已达到灵活运用和复用目的。

selenium定位方式的比较

标签:运用   oss   span   rgb   find   定位器   cto   pytho   返回值   

原文地址:https://www.cnblogs.com/ctltest/p/14480114.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!