2017-12-16 5 views
0
私は私のウェブサイトから「管理者」の値を取得しようとしています

から要素を見つけることができません、これは私はクロムを使用してXPathをコピーして、私は、この値を得たセレンクラス

<td align="center" class="okm-DisableSelect">Administrator</td> 

要素にある

/html/body/div[5]/div[3]/div/div[6]/div/div[4]/div/div[2]/table/tbody/tr[3]/td/div/div/div[2]/table/tbody/tr[3]/td[7] 

私はこれを試しましたが、「要素を見つけることができません」というエラーが表示されます。私は間違って何をしていますか?

driver.findElement(By.xpath("/html/body/div[5]/div[3]/div/div[6]/div/div[4]/div/div[2]/table/tbody/tr[3]/td/div/div/div[2]/table/tbody/tr[3]/td[7]")).getText(); 

答えて

1

まず、XPathは非常に脆い(壊れる可能性が高い)ものです。 /htmlで始まるXPathを使用すべきではありません。実際にXPathを使用するべきではありません。

第2に、XPathが何か問題があるかどうかを知るには十分な情報がありませんでした。最善の方法は、XPathをコピーしないことです。なぜなら、このような大規模で脆いXPathにつながるからです。理想的には、XPathの代わりにCSSセレクタを使用します。なぜなら、サポートされていて、速く、手技が簡単だからです。あなたは正しいことがあれば短くて脆くないので、何らかの道具を使わずに手工芸をする方法を学ぶために時間を費やすべきです。

HTMLが提供されているとしたら、のようなCSSセレクタから始め、それが動作するかどうかを確認します。そうでない場合は、含まれているテキスト「管理者」を使用してXPathにフォールバックすることができます。 //td[.='Administrator']。私は確信していますが、もっと多くのオプションがありますが、それ以上のHTMLがなければ、彼らはどんなものなのかは分かりません。