2016-10-13 27 views
0

こんにちは、私のコードの機能は、ユーザーの靴サイズの設定を取り、そのサイズに基づいてページ上の要素をクリックすることです。 私はこれを、ユーザーから数値入力して値に格納し、入力したサイズに一致する要素を検索して行います。ここで同じクラス名で複数の "li"をターゲットにする方法

は、私が使用しているウェブサイトからhtmlコードです:

<div class="form product__form product__form--size product__form--last js-select-size-mapper"> 
<ul class = "product-size"> 
<li class = "js-size-value "> 
8 
</li> 
<li class = "js-size-value "> 
9 
</li> 
<li class = "js-size-value "> 
9.5 
</li> 
<li class = "js-size-value "> 
10 
</li> 
<li class = "js-size-value "> 
10.5 
</li> 
</ul> 
</div> 

私は常に要素がクリックできないかに関するエラーのいくつかの並べ替えを取得します。奇妙な部分は、IWebElementの宣言が検証されていることがあります(宣言する際にエラーがないことを意味します)。クリックしようとするとエラーが発生することがあります。

より良いコード例が必要な場合は、ウェブサイトhereに移動してください。例えば

、私はこのコードを実行すると:

var element = driver.FindElement(By.XPath("//li[contains(@class,'js-size-value ')][contains(text(),size)]")); 
      element.Click(); 

*ノート、私は以前、「サイズ」と呼ばれる変数を宣言している、そしてそれは、「私はそれを言うときに参照するんだよ(テキスト() 、サイズ)]」

私はエラーを取得する:

Additional information: Unexpected error. Element is not clickable at point (825.1500244140625, 45.69999694824219). Other element would receive the click: div class="header__wrapper">

私はこれにアプローチする方法を知っている、と一般的には、それに当てるいくつかの光を必要としません。私は答えのためのstackoverflowを検索し、達成しようとしている、またはあいまいで理解しにくい正確に関係する投稿を見つけていません。

SeleniumとC#の初心者ですので、回答に細部を追加して、あなたが何を話しているのかわからない場合は、それは素晴らしいでしょう。

答えて

0

誤ってサイズを変数としてではなくテキストとして設定しました。これは、セレンが存在しないテキスト「サイズ」、とリスト項目を検索することを意味し、代わりに、例えば、サイズ9.5、

var element = driver.FindElement(By.XPath("//li[contains(@class,'js-size-value')][contains(text()," + size + ")]")); 
+0

こんにちはBoukeのための、私はあなたが提案したコードを実行し、小さなウィンドウが言ってポップアップFirefoxが更新中...新しいfirefoxdriver()行で "WebDriverException was unhandled"エラーが発生し、Firefoxが開きますが、ページが表示されません。私はそれがあなたのコードとは関係ないことを知っていますが、何か提案がありますか? –

+0

WebDriverがFireFoxで最新ではない可能性があります。 FireFoxを以前のバージョンに再度ダウングレードするか、当面はChromeを使用することをお勧めします。 – Bouke

+0

私はチュートリアルに続き、FireFoxをダウングレードしました。あなたのコードを試した後、私はエラーを受け取ります: –

関連する問題