自动化学习【2】 - 获取Element

一、获取 Web Element
1. 通过不同的页面属性获取 element
# 通过 Id  获取 
element = driver.find_element_by_id('id')

# 通过 class 获取
element = driver.find_element_by_class_name('class')

# 通过 name 获取
element = driver.find_element_by_name('name')

# 通过文案获取
element = driver.find_element_by_link_text('点击这里')

# 通过 标签头类型 获取
element = driver.find_element_by_tag_name('input')

# 通过 xpath 定位获取
element = driver.find_element_by_xpath("//div[@class='userName']")

# 通过 css 定位获取
element = driver.find_element_by_css_selector('div.highlight')

# 通过 css 定位获取元素的集合,上述方法都可以这么使用
elements = driver.find_elements_by_css_selector('div.highlight')

**说明: 一般会使用 ** find_element( self, by=By.ID, value=None ) 方法获取 element

# 需要引入 By
from selenium.webdriver.common.by import By

element = driver.find_element(By.ID,'userName')

# or  获取一个 element 集合
elements = driver.find_elements(By.ID,'username')

2、显示等待获取Element

**说明:**显示等待的代码定义了等待条件,只有该条件触发,才执行后续代码。平时尽量少使用 time.sleep()等待操作,这种情况是指定了固定的等待时长。 存在一些特别方便的方法,可以使你的代码只等待需要的时常,而不是固定的时常。

# 导入依赖包
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 设置显示等待 10 秒,超时时长会抛 TimeoutException 异常
wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_element_located((By.ID, 'username')))

方法封装:

    def find_element_wait(self, by=By.ID, value=None):
        """ 
        函数说明: 查找定位元素,5 秒内没有找到则抛出 TimeoutException 
        """
        element = None
        try:
			# 5s 内没有找到指定的元素,则会抛 TimeoutException 异常
            wait = WebDriverWait(driver=self.driver, timeout=5)
            res = wait.until(EC.presence_of_element_located((by, value)))
            element = self.driver.find_element(by=by, value=value)
            
        except TimeoutException as TE:
            log.error("等待超时,没有找到定位元素 : ", TE.msg)
        
        return element
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值