2013-08-09 23 views
6

私はSelenium内で次の要素を取得する一般的な方法を探しています。 Jqueryには.next()関数があり、指定された型を許可するためにオーバーロードされているため、JSベースのソリューションがセレンで利用できるかもしれないと想像しています。Seleniumで次の要素を取得することは可能ですか

私が想像しておいたような便利な機能があれば、誰かがすでにこれをやっていたはずです。あなたは要素、いくつかのセレクタ(たとえばBy.className("primary"))を選択したときに

乾杯、 ジェイミー

答えて

3

は、私はあなたが意味を前提とするつもりだ、とあなたはそのクラス名を持って次の項目を取得したいですか?

これを行うには、driver.findElements(By.className("primary"))に電話する必要があります。これにより、そのセレクタに一致するすべての要素のリストが表示されます。次に、あなたのニーズに合ったものを選ぶことができます。

場合は、実際にあなたがこれらの方法それを行うことができ、次の兄弟を返します)(次:

  • Javascriptを:はelement.nextSibling()
  • CSS:要素+ *
  • のXpathを:可能性の要素/ - 兄弟、次の:: *

(あなたのセレクタで要素を置き換え)

+0

ああありがとうございます。私はおそらくelement.nextElementSiblingは行く方法だと思います。 一般的なものが欲しいので、現在のWebElementインスタンスを取得して、別のインスタンスを返すことはできません。 – Jamie

0

ワンここで

current_element = driver.find_element_by_xpath('//android.widget.RelativeLayout/android.widget.TextView[@text="Current element text"]/../android.widget.TextView[@text="Next element text"]') 

それは以下となります:

  1. は、第一に、それは親要素に戻りますandroid.widget.TextView[@text = "Current element text"]
  2. に移動し以下のように同じ階層下の要素にナビゲートする方法は、XPathで/../を使用することですすなわちandroid.widget.RelativeLayoutを選択し、同じ階層の次のandroid.widget.TextView[@text="Next element text"]を選択します。
関連する問題