2016-03-25 16 views
0

Selenium IDEというFirefox用の拡張機能があります。 Selenium IDEでテキストを含む要素をクリックするだけでどうしますか?例として、私がGumtreeに広告を掲載したいと考えてみましょう(実際にはそうではありませんが、私が考えることができる最も単純な公開された例です)。あなたはこれらの要素の要素ロケータを見つける必要があるSelenium IDEのテキストをクリックするには?

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head profile="http://selenium-ide.openqa.org/profiles/test-case"> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<link rel="selenium.base" href="https://www.gumtree.com/" /> 
<title>gumtree</title> 
</head> 
<body> 
<table cellpadding="1" cellspacing="1" border="1"> 
<thead> 
<tr><td rowspan="1" colspan="3">gumtree</td></tr> 
</thead><tbody> 
<tr> 
<td>open</td> 
<td>https://my.gumtree.com/postad</td> 
<td></td> 
</tr> 
<tr> 
<td>click</td> 
<td> *** what do I put in here to choose "For Sale"? *** </td> 
<td></td> 
</tr> 
<tr> 
<td>click</td> 
<td> *** what do I put in here to choose "House Clearance"? *** </td> 
<td></td> 
</tr> 
<tr> 
<td>click</td> 
<td>id=continueButton</td> 
<td></td> 
</tr> 
</tbody></table> 
</body> 
</html> 

感謝

答えて

0

。良いことは、Selenium IDEがあなたのために(レコーディングモードで)できることです。

てみてください、次のロケータ..

For sale 
//form[@id='frmSyi']/div/div/div/div/nav/ul/li[2]/div/span 
or 
//li[2]/div/span[2] 

===========

House Clearance 
//form[@id='frmSyi']/div/div/div/div/div/div/div/div/ul/li[11] 
or 
//li[11] 

注:ハウスクリアランスをクリックするために使用ClickAtコマンドの代わりに、クリックします。

+0

これは、私が持っているプロジェクト(gumtreeではない)を変え続けるので、これはうまくいかないようです。なぜそれはテキストを通してできないのですか?何が簡単だろうか? – G33K

+0

また、あなたが提案した変更はうまくいかないようですが、Seleniumはどこをクリックして停止するのか分かりません。あなたはあなたの最後にそれらを試しましたか?あなたは完全なXMLを提供できますか? – G33K

+0

これはちょうどあなたに考えを与えることでした。もちろん、アプリケーションの場合は要素ロケータを見つける必要があります。ほとんどの場合、Selenium IDEはそれらを自動的に検出します。それ以外の場合は、firegbugなどの開発ツールを使用する必要があります。私は、アプリケーションのHTMLを共有する場合にのみ、さらにお手伝いします。 – TestingWithArif

0

テキストで要素を検索することは、通常、すべてのローカリゼーションには適していないため、テキストが変更された場合には非常に脆くなるため、悪い考えです。そのため、Selenium IDEはすぐに使用できません。とにかくxpathを使ってやるべきです。しかし、あなたはあなたのxpathにテキストを使用することができます。

click | //*[contains(text(),'For Sale')] 
click | //*[text()='House Clearance'] 

最初のコマンドは、テキスト「販売のための」を含む最初の要素をクリックします。

2番目のコマンド

は注意してテキストを正確に等しい「ハウスクリアランス」で最初の要素をクリックします - ページ上の、テキストを持つ複数の要素がある可能性が高い(それはですテキストを使用するのがうまくいかない理由)その場合、あなたのxpathはより詳細になるはずです。あなたの要素のようなスパンである場合例:

<span>For Sale</span> 

あなたは、あなたは、XPath here

0

についての詳細を読むことができるのxpath = //スパン[テキスト()= '販売のための']

を使用することができますあなたが決定している場合は、試すことができます:

driver.findElement(By.linkText("ElementText")).click(); 

または

driver.findElement(By.partialLinkText("ElementText")).click(); 
関連する問題