2016-07-15 14 views
0

"アカウントの選択"オプション値を探しています。ページの背後にあるHTMLコードがある:私は使用していますSelenium WebDriverを使用して選択リストから名前を見つけることができません

<tbody> 
<tr class="alt first"> 
<tr> 
<td height="30"> 
<select id="pkitem" name="pkitem" size="1" class="selectfont" onchange="multipickvalue(document.formMain.pkitem,document.formMain.listdata);document.formMain.listmodified.value=1;"> 
<option value="">--- Select Account---</option> 
<option value="**COPY" size="small">*PRIVATE AND CONFIDENTIAL* CON (**COPY) </option> 
<option value="ALDWYCH" size="small">*PRIVATE AND CONFIDENTIAL* CON (ALDWYCH)</option> 
<option value="56456465456456456" size="small">12345 (56456465456456456)</option> 
<option value="12345" size="small">123456 (12345)</option> 
<option value="2SISTERGRP" size="small">2 SISTERS FOOD GROUP (2SISTERGRP)</option> 
<option value="402SIST12" size="small">2 SISTERS FOOD GROUP (402SIST12)</option> 

C#のコードは次のとおりです。

var SelectAcc1 = Driver.Instance.FindElement(By.Id("pkitem")); 
var SelectElement = new SelectElement(SelectAcc1); 
SelectElement.SelectByText(SelectAcc); 

フィールド名を見つけることができません。誰かが助けてくれますか?

+1

「SelectAcc」の値は何ですか? – Buaban

+0

HTMLを正しくインデントしてください。 –

答えて

0

まず、HTMLコードに 'SelectAcc'というテキストがありません。

第2に、Selectリストでの作業に役立つSelectクラスのSeleniumフレームワークを使用していませんでした。

第3に、Selectクラスをいくつかのコードで初期化したとしても、SelectクラスにはSelectByTextという名前のメソッドがありません。それは選択する3つの方法がありますSELECT CLASS

を参照してください

selectByVisibleText("123456 (12345)"); 

ようにする必要があり、すなわち、それは二重引用符にする必要がありますので

第四に、値を渡す方法が間違っている、それは文字列値を期待します選択リストの値。
1. value属性がString.Empty

IWebElement SelectAccount = driver.FindElement(By.XPath(@"//select[@id='pkitem']/option[@value='']")); 

であることを一致selectByIndex
2. selectByValue
3. selectByVisibleText

+0

こんにちはGaurav、SelectAccはこの場合 "123456(12345)"という値を保持している文字列の名前です。既にC#コードで言及されていますが、心配するものではありません。ここの名前はpkitemです。 –

0

のいずれか、要素を見つけるのXpathを使用して要素を検索したりSelectElementからオプションを取得するにはまたは

IWebElement SelectAcc1 = driver.FindElement(By.Id("pkitem")); 
SelectElement selectElement = new SelectElement(SelectAcc1); 
IWebElement SelectAccount = selectElement.Options.FirstOrDefault(o => o.GetAttribute("value").Equals(string.Empty)); 
// This approach is slower than the first one 
関連する問題