1

Python モジュールをインポートして 3 時間以上乗り続けようとしていますが、成功しません。ここで 4 番目の回答で説明されている手順を実行しました。ここでは、Python モジュール Selenium2LibraryExt を作成することを提案しています。 ロボットフレームワークですべてのテキストを取得するには?

私が観察している問題は、同じテストの他のコードで Selenim2Library を使用しているため、Selenim2Library から継承する Selenium2LibraryExt をインポートしているため、テストは、たとえば Click Element キーワードが Selenim2Library または Selenium2LibraryExt から来ていることを認識していないことです。エラー

だから私は1-削除しました

       from Selenium2Library import Selenium2Library

私のpythonモジュールの頭からですが、テストケースのライブラリとしてそのままにしておきます:設定

 Library          Selenium2Library  

うまくいきませんでした。2-その後、削除しました

Library          Selenium2Library  

私のテストケースからですが、追加しました:

  from Selenium2Library import Selenium2Library  

私のpythonモジュールの頭に。しかし、どちらの場合もエラーが発生します。テストで2つのselenium2libraryライブラリが表示されないようにするにはどうすればよいですか?

ありがとう

4

2 に答える 2

2

継承するライブラリを使用する場合、テスト データは Selenium2Library またはカスタム ライブラリのいずれかをインポートする必要がありますが、両方をインポートする必要はありません。テストで直接ではなく、共有リソース ファイルを介してのみインポートする場合、これはより簡単に制御できます。

別のオプションは、Selenium2Library を置き換えずに拡張するライブラリを作成することです。

from robot.libraries.BuiltIn import BuiltIn

class Selenium2LibraryExt(object):

    @property
    def _s2l(self):
        return BuiltIn().get_library_instance('Selenium2Library')

    def get_all_texts(self, locator):
        """Returns the text values of elements identified by `locator`."""
        elements = self._s2l._element_find(locator, False, True)
        return [e.text for e in elements]

Selenium2Library の最新バージョン (>= 1.7) を使用している場合、Get Webelement とGet Webelementsを使用すると、キーワードがない多くのことを実行できます...

@{texts}    Create List
@{elems}    Get Webelements    some locator
:FOR    ${elem}    IN    @{elems}
\    ${text}    Get Text    ${elem}
\    Append To List    ${texts}    ${text}

同じことですが、拡張変数構文を使用してテキストを取得し、webelementを操作します。

@{texts}    Create List
@{elems}    Get Webelements    some locator
:FOR    ${elem}    IN    @{elems}
\    Append To List    ${texts}    ${elem.text}

またはPythonで:

from robot.libraries.BuiltIn import BuiltIn

class Selenium2LibraryExt(object):

    def get_all_texts(self, locator):
        """Returns the text values of elements identified by `locator`."""
        s2l = BuiltIn().get_library_instance('Selenium2Library')
        elements = s2l.get_webelements(locator)
        # or elements = BuiltIn().run_keyword('Get Webelements', locator)
        return [e.text for e in elements]

https://stackoverflow.com/a/35323931/2532697も参照してください。

于 2016-06-24T18:24:59.093 に答える