2017-12-20 17 views
1

特定のdivタグをクリックする機能が必要でした。以下はそのためのウォークスルーです。特定のdivタグの後に他のdivをクリックするセレクション(Xpathで指定)

私はこれが、このデータ・CONVIDで今すぐダイナミック

<div data-convid="AAQkADE3YTQxZjAyLTVkZTEtNDM3Ni05MjU2LWU0OTc3ODI1MjEwNgAQAP2rdT4x8K5Lo8nEGqTp+QI=" data-time="2017-12-19T13:43:35-05:00" id="_ariaId_447" aria-selected="true" tabindex="-1">...</div> 

ある別のDIV直後、「IDが動的であるので、私はできるようになりました

<div role="heading" tabindex="-1">...</div> 

が含まれている静的なdivタグを持っています特定のIDまたはデータをクリックするコードを指定してください。更新または新しいレコードがあるたびに。上のdivには、新しいデータコンビドIDが設定されます。新しい電子メールを作成するたびに、新しい動的divが作成されるたびに電子メールで取得してください。これはそれに似ています。今作成された新しい行をクリックする方法は?

私は<div role="heading" tabindex="-1">...</div>のXpathを指定してから、最初のdivをクリックすると考えていました。しかし、その実装方法はわかりません。誰かが私にこれを助けることができますか?

ご質問やご不明な点がありましたらお知らせください。また、この投稿が誤解を招くように思われる場合は、格下げまたは報告しないでください。コメントをお願いしますこの投稿を削除します。

答えて

1

作業のすべてを支援するための

おかげで、私はこの、より良いような高度な実装では、これらのツールにはあま​​り適していないことを決定するために私をリードセレン及びAwesomiumでやったので、私はJavaScriptを注入しました私の仕事とjavascriptは結果を返します。

あなたが探している解決策が見つかるかもしれませんが、最後に、私のように、単にJavaScriptを注入して結果を返すのが最も簡単です。

サンプル:

IWebDriver driver; // assigned elsewhere 
IJavaScriptExecutor js = (IJavaScriptExecutor)driver; 
js.ExecuteScript("document.querySelectorAll('div[role=\"heading\"]+div')[0].click();"); 
+0

することができます私がそれをするのに役立つことがわかっているものに似ていることを私がどのようにすることができるかのサンプル例を共有しますか?ありがとうございました – user1413

+1

@急いで@ N-ate私はあなた自身の質問に答えていると思った:)私の謝罪 – mrfreester

+0

あなたが正しいです、それはシンプルで、彼はあなたのアプローチを使用する必要があります。 –

2

次のXPathは、あなたが探しているものだろうか?

//div[@role='heading'][@tabindex='-1']/following-sibling::div[@data-convid][1] 
  • のdiv ::div
  • で、属性の役割を持つdiv要素の次の兄弟/following-sibling
  • ある属性データ-CONVID [@data-convid]
  • との最初の要素[1]
  • を選択= 'heading'およびtabindex = '-1' //div[@role='heading'][@tabindex='-1']
+0

あなたとN-ateの回答の両方が働いた – user1413

0

次のように一番上の<div>タグがある、あなたの質問を1として:

<div role="heading" tabindex="-1">...</div> 

次のように上記<div>タグが別の<div>タグが続きます。

<div data-convid="AAQkADE3YTQxZjAyLTVkZTEtNDM3Ni05MjU2LWU0OTc3ODI1MjEwNgAQAP2rdT4x8K5Lo8nEGqTp+QI=" data-time="2017-12-19T13:43:35-05:00" id="_ariaId_447" aria-selected="true" tabindex="-1">...</div> 

今人口の取得だけ<div>上新しいdata-conviddata-convidの値は動的ですが、click()にしてください。

さらに、上記の<div>には、新しいdata-convidが入力されます。作成された新しい行にclick()へだから、あなたは_ariaId_のように見えるとしてそのid開始_ariaId_と(<div>が続いているheadingとして設定role属性でトップ<div>を参照してXPathを構築することができます静的文字列)を次のように

"//div[@role='heading']//following::div[starts-with(@id, '_ariaId_')]" 

Incaseは、_ariaId_dynamicあります次のように私たちは少し一般的なことができます:

"//div[@role='heading']//following::div[1]" 

はおそらく、あなたが親次のように<div>でよりきめ細かを得ることができます(置き換え actual_text ...):

"//div[@role='heading' and contains(.,'...']//following::div[starts-with(@id, '_ariaId_')]" 
OR 
"//div[@role='heading' and contains(.,'...']//following::div[1]" 
関連する問題