Pythonのセレン---父と息子、兄弟、詳細なネイバー位置決めモード

https://blog.csdn.net/m0_37338590/article/details/80801302

親子でセレン、兄弟、隣接ノードの場所の方法は、実際のアプリケーションで多くの人々は、ノードが直接、問題は、相対的な位置で近くのノードに必要に配置することができないターゲットに好きencounter'dますが、親ノードの子ノードを見つけるのは簡単、子ノードの場所から親は、何のためのノードノードの兄弟を見つけ、詳細な解像度を作るためにかかりました。

1.親ノードロケータのノード

それは子の親ノードで配置されている最も簡単な確認は、以下の例に、我々は見つけることができる多くの方法が、あります。

次のコードの場合:

<HTML>
<BODY>
<DIV ID = "A">
<! -ロケータ親ノード- >
<DIV ID = "B">
<div>の子の親</ DIV>
</ DIV>
</ DIV>
</ BODY>
</ HTML>
ノードBは、子ノードのID、次のサンプルコードを配置されていないとします

# - * -コーディング:UTF-8 - * -
セレンインポートwebdriverをするから
ドライバ= webdriver.Firefox()
driver.get( 'D:\\ PY \\ AutoTestFramework \\ SRC \\他\\ test.htmlという')
1.串联寻找
印刷driver.find_element_by_id( 'B')。find_element_by_tag_name( 'DIV')。テキスト
#1 2.xpath父子关系寻找
印刷driver.find_element_by_xpath( "//のdiv [@ ID = 'B'] / DIV") .text
#1 3.cssセレクタ父子关系寻找
印刷driver.find_element_by_css_selector( 'DIV#1 B> DIV')テキスト。
#の4.cssセレクタ第nの子
印刷driver.find_element_by_css_selector( 'DIV#BがDIV:n番目の子(1) ')の.text
#5.cssセレクタn番目の型
印刷driver.find_element_by_css_selector(' DIV#1 BのDIV:n番目の型(1) ')テキスト。
#の6.xpath轴子
印刷driver.find_element_by_xpath(「// DIV /子供:: divの[ID = 『B』 @]」)のテキスト。
driver.quit()
结果:
子の親
の子に対する親
の子に対する親
の子に対する親
の子に対する親
の親へ子

1〜3は、すべてのよく知られた方法は、我々はもう言わないだろう。第四の方法は、CSSセレクタ使用:n番目の子divタグであるn番目のセレクタノードを返す(n)を、第5の方法は、別のCSSセレクタを使用し:n番目の型( n)は、セレクタは、セレクタとの違いに注意して、n番目のdivタグを返し、第6の方法は、XPathの軸子を使用し、これは省略することができ、XPathのデフォルトの軸であり、その本質は方法2であります同じ。

もちろん、CSSなどの最後の子、n番目-最後の子、あなたは親子関係を選択することができますいくつかのオプションは、自分のBaiduのに興味がある可能性がある、ブロガーは、CSSセレクタについて話をする機会を持つことになります。

子を配置することにより2は、親ノードをノード

親ノードに子ノードによって、あなたは以下のコードのために、少し難しく探したいです:

<HTML>
<BODY>
の<divのid = "A">
<! -子节点定位父节点- >
の<div>
<div>の親の子
の<div>
<divのID = "C"> </ div>
</ DIV>
</ DIV>
</ DIV>
</ DIV>
</ BODY>
</ HTML>


私たちは、次のようにCのdiv要素のその2つの親ノード、サンプルコードを配置します。

# - * -コーディング: - * - UTF-8
webdriverをセレンインポートから
ドライバ= webdriver.Firefox()
driver.get( 'D:\\ \\のPy AutoTestFramework SRC \\ \\ \\ test.htmlというその他')
1.xpath: `現在のノードの.`代表; '..'親ノードのための
印刷driver.find_element_by_xpath( "//のdiv [@ ID = 'C'] /../ ..")テキスト。
#の2.xpathシャフト親
プリントdriver.find_element_by_xpath。テキスト( "// DIV /親:: * /親:: divの[ID = 'C' @]")
)(driver.quit


結果:

親の子
の親に子

ここでは、2つの選択肢があり、我々が知っている最初のものは、現在のノード、..は、親ノードを表すこと、..形態である。上記のような方法の2種類が、XPathの軸:.親です、現在のノードの親ノードを取ります。CSSデザインは、どの親が道を得ることができますことはできませんので、これは、また痛いポイントCSSセレクタである(少なくともまだ)

兄弟ノード3.兄弟ノード位置

これは、我々がここで見つけたい、第三、第四兄弟です。このような次のソースとして:

<HTML>
<BODY>
<DIV ID = "A">
<! -兄弟ノードの位置については、2つのノードが次の- >
。<DIV>ブラザー1 </ div>
<DIV ID = "D"> </ DIV >
の<div>ブラザー2 </ div>
</ div>
</ BODY>
</ HTML>


どのようにノードDによって彼の兄弟ノードを探していますか?コードサンプルを見てください:

# - * -コーディング:UTF-8 - * -
webdriverをセレンのインポートから
ドライバー= webdriver.Firefox()
driver.get(「D:Pyを\\ \\ \\コードAutoTestFramework SRC \\ \\ \\ test.htmlというその他')
#1 1.xpath、親ノードが取得した彼の兄弟ノード
プリントdriver.find_element_by_xpath(「// divの[ID = @' /../のdiv D '] [1]」)。テキスト
#2.xpathシャフトpreceding-兄弟
プリントdriver.find_element_by_xpath( "// divの[ID = 'D' @] / divの先行兄弟:: [1]")。テキスト
driver.quit()


結果

弟1人の
弟1

ここでブロガーはまた、2つの方法を含む、一つはそのノードの兄弟ノードの親によって得られる、別のよりエレガント、XPathの軸によって:先行兄弟、現在のノードの兄弟のすべての兄弟を取得することができます、より高い数字はもちろん、XPathの軸は、離れて現在のノードからの平均、現在ノードから最も近いノードの兄弟を表し、括弧内のその符号を注:上記のかもしれないが、使用することがより複雑であり、それが得られることすべての非ノードの祖先ノード(これは、すべての軸を説明するためにブログ記事を書くために専用の別の日に良い説明ではありません)の前に

兄弟ノード4.兄弟ノード位置

同じソースと3は、ノードを介して、その兄弟ノードDを位置決めするために、コード例を参照してください。

# - * -コーディング:UTF-8 - * -
セレンインポートwebdriverをから
ドライバ= webdriver.Firefox()
driver.get( 'D:\\コード\\ PY \\ AutoTestFramework \\ SRC \\他\\ test.htmlという「)
#1 1.xpath、通过父节点获取其弟弟节点
印刷driver.find_element_by_xpath( "// divの[ID @ = 'D'] /../ DIV [3]")。テキスト
#2.xpath轴following-兄弟
印刷driver.find_element_by_xpath( "//のdiv [@ ID = 'D'] /以下、兄弟:: DIV [1]")。テキスト
#1 3.xpath轴以下
プリントdriver.find_element_by_xpath( "// DIV [@id = 'D'] /以下:: * ")。テキスト
#の4.cssセレクタ+
印刷driver.find_element_by_css_selector( 'のdiv#のD +のdiv')。テキスト
#の5.cssセレクタ〜
印刷driver.find_element_by_css_selector( '#DIV D 〜のdiv ')。テキスト
driver.quit()


結果:

弟2
弟2
弟2
弟2
の弟2

三種類上のXPathと彼の兄弟ノードを検索する5つの方法、最初はよく理解されている、第二は、XPathの軸を使用して、次の、兄弟、同様の先行兄弟で、その役割は、すべてで現在のノードを取得します兄弟ノードのレベルが、あまりにも、弟、遠い現在のノードから多数の最も近いノードから現在のノードを表し、第三は、XPath軸を使用する:すべてのノードが実行した後、(と先祖ノードに加えて、そのノードに到達します)代わり方向に先行したが、順序を下に読むことのように簡単に、エラーしにくく、また彼の兄弟ノードを取得するために使用することができますが、このような使用はお勧めしません。第4、第5、我々はCSSセレクタ、+を使用して-違いは:現在のノードのdivノード以下+の手段、〜find_elementsは、DIVノードのセットを得ることができれば、現在のノードの後DIVノードを表します。
----------------
免責事項:この記事は、元の記事のCSDNブロガー「ジョニースタジオ」で、BY-SAの再現著作権契約、CC 4.0に従って、元のソースとのリンクを添付してくださいこの文。
オリジナルリンクします。https://blog.csdn.net/m0_37338590/article/details/80801302

おすすめ

転載: www.cnblogs.com/Reclouds-shangri-la/p/11431407.html