2016-09-16 25 views
0

私は簡単なメニューバーのアイコンを取得しようとしています。ただし、IDとクラスは使用できません。私はpage.execute_script()で試してみました。UI反応カピバラボタンクリックテスト

HTMLコード

<button tabindex="0" type="button" style="border: 10px; box-sizing: border-box; display: inline-block; font-family: Roboto, sans-serif; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); cursor: pointer; text-decoration: none; margin: 0px; padding: 0px; outline: none; font-size: 14px; font-weight: 500; transform: translate(0px, 0px); color: white; width: 16.6667%; text-transform: uppercase; background-color: rgb(63, 174, 73);"> 
    <div> 
    <div style="display: flex; flex-direction: column; align-items: center; justify-content: center; height: 48px;"> 
     <!-- react-text: 57 -->Type<!-- /react-text --> 
    </div> 
    </div> 
</button> 

カピバラコード

script = "document.getElementsByClassName('button')[0].click();" 
page.execute_script(script) 
+0

解決したい問題は何ですか?どうすればあなたを助けることができますか? – mrzasa

+0

私の目標はボタンをクリックすることです。例は 'find(#some_idまたは.someclass).click'です。ただし、これらはタグでは使用できません。 – khoamle

答えて

1

それがでtabindex = "0" のボタンのみならあなたが思い付くことができれば、あなたが

find('button[tabindex="0"]').click() 

を単に行うことができますexecute_scriptを使わずにボタンをクリックすると、ボタンを選択するためのCSSまたはXPath式が表示されます(これはページ上に表示されます)イベントがユーザーが生成するものに近いため、execute_scriptを使用しないでください)。もう1つの選択肢は、ボタンが識別可能な要素の中に含まれている唯一のボタンであれば、その要素を識別可能な要素に絞り込むことができます。

find('form#my_form').find('button').click() 

またはそれが最初のボタンは、セクション

find('form#my_form').all('button')[0].click() 

中だか、ページ上のちょうど最初のボタンだとあれば、あなたはどのボタンでページから来ている場合

all('button', minimum: 1)[0].click() 

クラス名で検索しているため、execute_scriptが機能しませんでしたが、htmlによればボタンにはクラス属性が設定されていません。とにかく、できるだけカピバラがexecute_scriptを使用しないほうが良いのです。なぜなら、execute_scriptには待ち時間や再試行動作がなく、テストしたいアクションを実際に実行できることを確認するいくつかのチェックをショートカットします。

関連する問題