2017-10-11 9 views
1

を使用して同じ要素クラスをクリックすることはできません別のタブをクリックして同じ「新しい追加」ボタンをクリックしようとすると、Rubyスクリプトは機能しません。 enter image description here Rubyコードに問題はありますか?は、私は次の画面を持ってワチール

buildingTypeTab = driver.a id: "tab-master-tab-building" 
buildingTypeTab.wait_until_present 
if buildingTypeTab.exists? 
    buildingTypeTab.click 
end 

    addNewButton = driver.button class: ['btn btn-primary'] 
    addNewButton.wait_until_present 
    if addNewButton.exists? 
     addNewButton.click 
    end 

私はあなたを助けてくれます。どうもありがとうございました。

答えて

3

私はこれらのタブはすべて同じWebページの一部だと思いますか?つまり、すべて同じHTML内にありますか?

この場合、driver.button class: ['btn btn-primary']はHTMLの最初のインスタンスが見つかると停止しますが、これは毎回探しているボタンではありません(最初のタブのボタンですあなたが期待どおりに働いた)。私の心の中で

最良の選択肢は

  • (可能であればたとえば、代わりにclassidを使用)一意の各タブでボタンを識別するための方法を見つけるされている、または
  • はにすべてのボタンを引きますコレクションを選択し、コレクションインデックスを使用してボタンをクリックします。たとえば、

button_collection = browser.buttons(:class, ['btn', 'btn-primary']) button_collection[2].click # Will click the 3rd button in the collection

+0

ご意見ありがとうございます。私はそれが今働いている... – FMD

0

PJDからの提案を読んだ後、 は、私はそれを少し変更し、それは次のように働いて得た:

buildingTypeTab = driver.a id: "tab-master-tab-building" 
buildingTypeTab.wait_until_present 
if buildingTypeTab.exists? 
    buildingTypeTab.click 
end 

    addNewButton = driver.button(:class => ['btn btn-primary'], :index => 2) 
    addNewButton.wait_until_present 
    if addNewButton.exists? 
     addNewButton.click 
    end 

PJDは、はい、これらすべてを言ったようにタブは同じHTMLの一部です

ありがとうございます。

+0

誰かがあなたの質問に答えたら、彼らの答えを受け入れてください、彼らは15点を得るでしょう、あなたは答えの左上にチェックマークをクリックする必要があります。 – RAJ

関連する問題