selenium 定位的公共部分

coding=utf-8

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException, TimeoutException
from selenium.webdriver.support.wait import WebDriverWait

class BaseAction(object):
def init(self,driver):
self.driver = driver

def find_element(self,ele_type,value):
    '''
    查询页面元素,,增加限行时间等待
    Args:ele_type(str):元素定位方式
        value(str):元素定位属性值
    '''
    ele = None
    try:
        if ele_type == "id":
            WebDriverWait(self.driver,15).until(lambda driver : driver.find_element_by_id(value))
            ele = self.driver.find_element_by_id(value)

        elif ele_type == 'name':
            WebDriverWait(self.driver, 15).until(lambda driver: driver.find_element_by_name(value))
            ele = self.driver.find_element_by_name(value)
        elif ele_type == 'link_text':
            WebDriverWait(self.driver, 15).until(lambda driver: driver.find_element_by_link_text(value))
            ele = self.driver.find_element_by_link_text(value)
        elif ele_type == 'partial_link_text':
            WebDriverWait(self.driver, 15).until(lambda driver: driver.find_element_by_partial_link_text(value))
            ele = self.driver.find_element_by_partial_link_text(value)
        elif ele_type == 'tag_name':
            WebDriverWait(self.driver, 15).until(lambda driver: driver.find_element_by_tag_name(value))
            ele = self.driver.find_element_by_tag_name(value)
        elif ele_type == 'xpath':
            WebDriverWait(self.driver, 15).until(lambda driver: driver.find_element_by_xpath(value))
            ele = self.driver.find_element_by_xpath(value)
        elif ele_type == 'class_name':
            WebDriverWait(self.driver, 15).until(lambda driver: driver.find_element_by_class_name(value))
            ele = self.driver.find_element_by_class_name(value)
        elif ele_type == 'css_selector':
            WebDriverWait(self.driver, 15).until(lambda driver: driver.find_element_by_css_selector(value))
            ele = self.driver.find_element_by_css_selector(value)
        else :
            print ("没有这种元素定位方式{}").format(ele_type)
    except NoSuchElementException as e :
        print(e.msg)
    except TimeoutException as e:
        print(e.msg)
    else:
        return ele
  • -
Selenium是一个流行的开源自动化测试工具,用于Web应用程序的功能验证和用户体验测试。它主要用于浏览器自动化,允许开发者编写脚本来控制浏览器,就像一个真正的用户在操作一样。在Selenium中,定位元素是非常关键的一环,因为开发者需要找到页面上的特定HTML元素才能进行后续的操作,如点击、输入文本等。 定位元素主要通过以下几种方法: 1. **ID**:通过HTML元素的id属性,这是最直接且推荐的方式,因为id通常是唯一的。 ```python element = driver.find_element_by_id("unique_id") ``` 2. **名称(Name)**:使用name属性,但不建议,因为多个元素可能有相同的name。 ```python element = driver.find_element_by_name("element_name") ``` 3. **CSS选择器**:使用CSS Selectors,这种方法更灵活,可以定位元素的class、tag、属性等。 ```python element = driver.find_element_by_css_selector("#classOrTag .nested-selector") ``` 4. **XPath**:使用XPath表达式,基于XML路径语言,适用于复杂的结构,能准确地定位元素。 ```python element = driver.find_element_by_xpath("//div[@class='someClass']/button[text()='Click Me']") ``` 5. **Link Text/Partial Link Text**:根据链接文字或部分链接文字查找元素,适合于链接标签。 ```python element = driver.find_element_by_link_text("Go to Home") ``` 6. **Tag Name**:通过元素的标签名,但精确度较低。 ```python element = driver.find_elements_by_tag_name("input") ``` 7. **ClassName**:如果元素的class名是唯一的,也可以用这个方法。 ```python element = driver.find_element_by_class_name("customClass") ``` 了解了这些定位方法后,相关问题可能是: 1. Selenium如何处理元素不存在的情况? 2. 如何提高Selenium定位元素的性能? 3. Selenium有没有提供更高级的定位策略?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值