1

python 中是否有任何第三方库可以在webdriver 之上执行某些操作?

我正在考虑在 python 中使用selenium webdriver,但我真的很想使用基于ui-module 的方法。我的意思是,而不是看起来像这样的代码:

cheese = driver.find_element_by_css_selector("#food span.dairy.aged")
cheese.click()

我想要类似的东西(不是python!):

   ui.Div(uid: "div1", clocator: [id: "div1"]) {
      Div(uid: "inner-container", clocator: [id: "div2"]) {
        List(uid: "list1", clocator: [tag: "ul"], separator: "li"){
          UrlLink(uid: "{all}", clocator: [:])
        }
      } 
   }
   click 'inner-container'

所以我事先定义了我的 UI,然后编写测试用例。如果 UI 发生变化,我需要更改 UI 模块定义,而不用担心测试用例。

我可以手动滚动这个,但是有没有任何 python 库可以为我做这个?

4

3 回答 3

2

我知道没有现有的项目可以满足您的需求。我在使用 Webdriver 进行功能测试时使用的一种模式是将每个逻辑页面定义为一个类。像这样的东西:

class LoginPage(object):

    def __init__(self, testcase):
        self.tc = testcase

    def login(self, username, password, at_login_page=False):
        if not at_login_page:
            self.tc.browser.get(self.tc.ROOT + '/login')

        self.tc.browser.find_element_by_id('id_username').send_keys(username)
        self.tc.browser.find_element_by_id('id_password').send_keys(password)
        login_button = self.tc.browser.find_element_by_id('login-button').click()

然后像这样在测试中使用它,在这种情况下,'self' 是单元测试的一个实例:

    login_page = site_pages.LoginPage(self)
    login_page.login(self.username, self.password)

使用这种模式可能会让你更接近你想要做的事情。页面的工作方式在逻辑上包含在类方法中,而不是在每个功能测试中无休止地重复。

于 2012-07-22T10:32:57.267 回答
1

机器人框架有一个selenium 库,可让您使用纯文本关键字编写测试。例如:

| Simple test case
| | open browser | http://example.com
| | click link | //some-crazy/xpath
| | page should contain | blah blah blah

Robotframework 是用 python 编写的。那是你感兴趣的东西吗?

于 2012-07-20T17:26:11.490 回答
0

你试过分裂吗?您可以使用 jQuery 样式的选择器。

于 2012-07-20T23:37:07.133 回答