0

NightwatchJS で作成したコマンドをテストしようとしていますが、セレクターに関連するエラーが発生し続けます。エラーは「「表示」が期待されますが、「見つかりません」です。これは、2 番目のセレクターの xPath が正しくないことに関連しているようです。 ここに画像の説明を入力 セレクター関数は xPath を利用し、Nightwatch メソッドを使用して要素をテストします.waitForElementVisible. ファイル名を引数として使用して要素を正常に選択する、作業中のコマンドの外に共通コマンド(基本的には単なるセレクター)を作成しました。問題は、最初のセレクター (shoeboxSelectButton) を取り、/div を追加する 2 番目のセレクター (shoeboxDropdown) です。shoeboxDropdown セレクターは、shoeboxSelectButton に関連付ける必要があります。私がやりたいことは、ボタンを選択してから、そのボタンのドロップダウンメニューをクリックすることです。xPath を見ると、私のデリマが表示される場合があります。

靴箱選択ボタン:

  "//*[@id=\"sidebar-plugins\"]/div[1]/div[3]/div/div/div[2]/div[1]/ul/li/div[span/text()='" + filename + "']"

靴箱ドロップダウン:

//*[@id="sidebar-plugins"]/div[1]/div[3]/div/div/div[2]/div[1]/ul/li/div[2]

どちらも同じリスト項目の下にありますliが、別の下にありますdivs。ファイル名のテキストはdiv[1]にあり、ドロップダウン メニューは にありdiv[2]ます。最初のセレクターを使用して、xPath を使用して 2 番目のセレクターを取得するにはどうすればよいですか?

shoeboxSelectButton = require "../Common/shoeboxSelectButton"

exports.command = (filename) ->
    mappx = @page.mappx()

    shoeboxDropdown = () ->
      shoeboxSelectButton(filename) + "/div" 

ここに画像の説明を入力

4

2 に答える 2

1

OK-多くの試行錯誤の後、私はそれを理解することができました. 追加//すると、パスを初期パスから派生させることができるようです。私のソリューションはこのように見え、他のセレクターにも適用できました。まず、shoeboxSelectButton セレクターの xPath を次のように微調整する必要がありました (注: これは Coffeescript にあります)。

module.exports = (filename) ->
"//*[@id=\"sidebar-plugins\"]/div[1]/div[3]/div/div/div[2]/div[1]/ul/li[.//span/text()='" + filename + "']"

次に、コマンドのコードを変更して、shoeboxDropdown (および shoeboxRemoveButton) のセレクターを次のように派生させます。

shoeboxSelectButton = require "../Common/shoeboxSelectButton"

exports.command = (filename) ->
    mappx = @page.mappx()

shoeboxDropdown = () ->
    shoeboxSelectButton(filename) + "//em"

shoeboxRemoveButton = () ->
    shoeboxSelectButton(filename) + "//ul/li[3]/a"

最後に、テスト ファイル内で 1 つの呼び出しを行うだけで済みました。できます!これが将来誰かに役立つことを願っています。

browser.ShoeboxPanel.deleteShoebox "Typical"  
于 2016-12-16T15:48:42.930 に答える
1

親セレクターを使用してから、その 2 番目の div にインデックスを付けてみてください。このようなもの...

"//*[@id=\"サイドバー プラグイン\"]/div 1 /div[3]/div/div/div[2]/div 1 /ul/li/div[span/text()=' " + ファイル名 + "']/../div[2]"

https://www.simple-talk.com/dotnet/net-framework/xpath-css-dom-and-selenium-the-rosetta-stone/私は個人的にxpath用のRosetta Stone pdfを使用して、これらのタイプのいくつかを把握していますケースの。

于 2016-12-15T14:30:51.163 に答える