3. Find

乙醇 创建于 about 7 years 之前

最后更新: less than a minute 之前

阅读数: 175

3. Find

webium.find.Find 方法可以在页面或者其他容器中定位元素,返回WebElement实例。

Find方法的主要用到2个参数分别是

  • by: 定位策略,比如By.ID
  • value: 定位元素时用到的具体属性值
from selenium.webdriver.common.by import By
from webium import BasePage, Find

class SomePage(BasePage):
    buy_btn = Find(by=By.CSS_SELECTOR, value='a.buy-btn')

    def __init__(self):
        super(SomePage, self).__init__(url='http://itest.info')


if __name__ == '__main__':
    page = SomePage()
    page.open()
    page.buy_btn.click()

ui_type

在定位一些自定义的对象时我们可以指定ui_type参数来定制化Find的行为。

from selenium.webdriver.common.by import By
from selenium.webdriver.remote.webelement import WebElement
from webium import BasePage, Find

class Link(WebElement):
    def is_secure(self):
        return self.get_attribute('href').startswith('https://')


class TypedPage(BasePage):
    join_link = Find(Link, By.CSS_SELECTOR, 'a.hover-effect')

    def __init__(self):
        super(TypedPage, self).__init__(url='http://itest.info')


if __name__ == '__main__':
    page = TypedPage()
    page.open()
    print('Is link secure: ' + str(page.join_link.is_secure()))

上面的例子里,我们定义了Link类,继承自WebElement,用以代表一般性的链接。is_secure()方法用来判断链接是否是https协议的。

join_link = Find(Link, By.CSS_SELECTOR, 'a.hover-effect')表示定位元素,并返回类型是Link的实例。

context 上下文

有时候你可能在用例运行时才可以确定页面的结构,现代网页是动态且多变的。如果你不能在类属性的定义中使用Find,那么你应该直接把该页面对象直接传到定位代码里。

from selenium.webdriver.common.by import By
from webium import BasePage, Find

class DynamicPage(BasePage):
    def __init__(self):
        super(DynamicPage, self).__init__(url='http://itest.info')

    def get_link_by_href(self, href):
        return Find(by=By.CSS_SELECTOR, value='a[href*="{0}"]'.format(href), context=self)


if __name__ == '__main__':
    page = DynamicPage()
    page.open()
    page.get_link_by_href('registration').click()

上面的例子里, get_link_by_href(self, href)方法通过动态传入的href来定为不同的对象,这时候就需要把self传入Find的对应上下文里,这是套路,因为Find方法就是这么设计以便正常工作的。

0

相关课程

TestNG教程
图文
TestNG教程

课程分类: 测试框架

Java语言中最流行的测试框架了

  • 已完结
  • 已更新12集
  • 最后更新时间: 2024-03-18 12:55:14

免费

查看详情
python unittest测试框架教程
图文
python unittest测试框架教程

课程分类: 测试框架

python 自带的单元测试框架

  • 已完结
  • 已更新8集
  • 最后更新时间: 2024-03-18 12:12:46

免费

查看详情
TDD测试驱动开发教程
图文
TDD测试驱动开发教程

课程分类: 测试框架 软件测试基础

TDD其实并不神秘

  • 已完结
  • 已更新7集
  • 最后更新时间: 2024-03-18 11:53:22

免费

查看详情