2016-09-16 10 views
0

最近、セレニウムでいくつかの作業をしていて、click()関数で問題が発生しています。selenium click()skipping

次のHTMLコードを考える:私は(但しクリックし、「メッセージを送信」ボタンをクリックしようとしている

<div id="sendreply"> 
     <input type="submit" class="button norm-green" value= 
     "Send Message name="sendmessage"> == $0 
    </div> 

)のすぐ下流の操作にアクションと進む上を通過します。

私は名前とXPathの両方で要素を見つける試してみました:

time.sleep(2) 
    option='by_name' 
    if option == 'by_name': 
     driver.find_element_by_name('sendmessage').click() 
    else: 
     driver.find_element_by_xpath("//div[@id='sendreply']").click() 

私は一切エラーコードを取得していません。

大変助かりました。

+0

HTMLをコピーしたときにエラーが発生しました。実際のHTMLには、「プライムメッセージ」という二重プライムが含まれています。 – David

答えて

0

あなたはすべてを試みたが、何も成功を得るていない場合は、クリックすると以下のように、この問題から取り除く実行するために、代替ソリューションとしてexecute_script()を使用してみては: -

driver.execute_script("arguments[0].click()", driver.find_element_by_name('sendmessage')) 

警告: - JavaScriptインジェクションHTMLElement#click()は、テストのコンテキストでは使用しないでください。それはテストの目的を破るものです。まず、実際のユーザーが要素とやり取りできることを保証していないため、実際のクリック(focus, blur, mousedown, mouseup...)のようなすべてのイベントを生成しないためです。しかし、この問題を解消するための代替ソリューションとして使用することもできます。

関連する問題