2017-10-12 10 views
-2

XPATHを使用してHTMLのラベルの横にチェックボックスがあるかどうかを確認したいと思います。HTML内にある要素が隣にあるかどうかを確認する方法

例えば

<div> 
    <input type="checkbox" /> 
    <label>This Is A Test</label> 
</div> 

は私が"//label[.='This Is A Test']"を使用してラベルを取得することができます知っていると私はチェックボックスが//label[.='This Is A Test']/parent::div/checkoxを使用して存在しているかどうかを確認することができただろうと思ったが、私はエラーを取得する(セレンを使用して)いますチェックボックスは存在しません。

答えて

1

XPath Axes

[axisname::nodetest[predicate]] 

    @* selects all the attributes of the context node 
    .. selects the parent of the context node 

XMLテンプレート:

<div> 
    <input type="checkbox" /> 

    <label>This Is A Test</label> 

    <input type="checkbox1" /> 
</div> 

後のXPathはあなたCheck役立つことがあります。

ラベル名に基づいて
//label[.='This Is A Test']/../input[@type="checkbox"] 
//label[.='This Is A Test']/parent::*/input[@type="checkbox"] 
//label[.='This Is A Test']/ancestor::div/input[@type="checkbox"] 

False « 
//label[.='This Is A Test']/../input[@type="check"] = //input[@type="checkbox"] 

True « 
//label[.='This Is A Test']/../input[@type="checkbox"] = //input[@type="checkbox"] 

//label[.='This Is A Test']/following::input[@type="checkbox1"] = //input[@type="checkbox1"] 

//label[.='This Is A Test']/preceding::input[@type="checkbox"] = //input[@type="checkbox"] 
0

チェックボックスはラベルの親ではありません。あなたのxパスごとに、それは兄弟ではない親をチェックします。

チェックボックスの横にあるチェックボックスはチェックボックスの横にあります。以下のxパスを試すことができます。

//input[@type='checkbox']/following-sibling:label[.='This Is A Test'] 

または

//label[.='This Is A Test']/preceding-sibling:input[@type='checkbox'] 
0

、チェックボックスを取得します。

//label[text()='This Is A Test']/preceding-sibling::input[@type='checkbox'] 

のXPathの説明: -まずチェックボックスのラベル名を取得する必要があります。だから<label>タグでtext()メソッドを使用してxpathを開始し、preceding-siblingキーワードを使用して<input>タグをtype属性とともに取得します。

+0

@MrThursday、この回答をお試しください。 'xpath'の私の説明はあなたを助けましたか? –

+0

あなたの問題が解決した場合は、この回答に「承認済み」と記入してください。 :) –

関連する問題