1

Webdriverの上で何かをするPythonにサードパーティのライブラリはありますか?

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 の機能テストで使用してきた 1 つのパターンは、各論理ページをクラスとして定義することです。このようなもの:

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()

そして、それをテストで次のように使用します。この場合の「自己」は単体テストのインスタンスです。

    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 に答える