2013-12-20 31 views
6

すべての要素は動的です。私は次のHTMLからユニークであるだけでプレースホルダを見ることができます: -xpathを使用してプレースホルダから値を取得する方法

<input 
    id="ext-gen1617" 
    type="text" 
    size="20" 
    class="x-form-field x-form-text x-form-focus" 
    autocomplete="off" 
    aria-invalid="false" 
    placeholder="Gender" 
    data-errorqtip="" 
    role="textbox" 
    aria-describedby="combobox-1166-errorEl" 
    aria-required="true" 
    style="width: 78px;" 
/> 

私は

//input[@placeholder='Gender'] 

しかし、私のwebdriverをスクリプトを使用してみました値が

placeholder="Gender". 

に表示取得する必要がありますそれを特定することができませんでした。

誰でも可能な解決策を教えてください。

+0

エラーは何ですか?右のフレームにドライバがありますか? – Karthikeyan

+0

org.openqa.selenium.NoSuchElementException:xpathで要素を見つけることができません== * * [@ placeholder = 'Gender'] – user2572510

+0

あなたのケースがここに収まらない場合は、このエラーには多くの可能性がありますhttp:// stackoverflow .com/questions/17677587/find-element-with-xpath/17695301#17695301、私たちはさらに掘ることができることを教えてください – Karthikeyan

答えて

3
String s=driver.findElement(By.xpath("//input[@placeholder='Gender']")).getAttribute("placeholder"); 
System.out.println(s); 

ファイルの属性を取得するには、.getAttribute()メソッドを使用できます。

+0

Genderフィールドの内側をクリックする必要があります。私がgetAttribute()を使うと、webelementではなく文字列が返されます。 – user2572510

+0

あなたは性別にいくつかの値を入力する必要があることを意味??上記のスニペットの – kiran

+0

は、プレースホルダに表示される値を尋ねました。なぜ私はコードにプレースホルダ値を表示しましたか? – kiran

0

私はあなたが(フロントエンド)スクリプト生成Web要素を扱っていると仮定し、あなたは思考の痩身の方法を受け入れる必要があります。その要素だけでWeb要素を抜き出してはいけません。あなたがそれらの親や兄弟からXPathを構築しようとしていない場合。

は、その後、あなたがXPathは、

あるHTMLのための

//*[@id='staticID']/div/input 

<div id="staticID"></div> 
    <input name="dynamic one"/> 

、としてXPathを構築することができます

<div id="somestatic id"> 
    <div id="xyz"> 
    <input name="dynamic one"/> 
    </div> 
</div> 

、HTMLはこのように書き、言います

//*[@id='staticID']/following-sibling::input 

同様にn個のオプションがあります。上記の文が動作するかしないで、私に教えてください

driver.findElement(
    By.cssSelector("input[id*='ext-gen']") 
).getAttribute("placeholder") 

を試してみてください

関連する問題