2016-07-15 7 views
0

"계정 선택"옵션 값을 찾으려고합니다. 페이지 뒤에 HTML 코드는 다음과 같습니다 내가 사용하고Selenium WebDriver를 사용하여 Select List에서 이름을 찾을 수 없습니다.

<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'텍스트를 찾을 수 없습니다.

둘째, Select 목록에서 작업하는 데 도움이되는 Select 클래스의 Selenium 프레임 워크를 사용하지 않았습니다.

셋째, 코드에서 Select 클래스를 초기화했는데 Select 클래스에는 SelectByText 이름으로 메소드가 없습니다. 선택하는 3 가지 방법이 있습니다

selectByVisibleText("123456 (12345)"); 

SELECT CLASS

를 참조 것처럼해야한다 즉이 따옴표에 있어야하므로

넷째, 값이 잘못 전달하는 방법, 그것은 문자열 값을 기대 선택 목록의 값.
1. selectByIndex
2 selectByValue
3. selectByVisibleText

+0

Hi Gaurav, SelectAcc는이 경우 "123456 (12345)"값을 보유하고있는 문자열의 이름입니다. 이미 C# 코드에서 언급 했으므로 염려 할 부분이 아닙니다. 가장 큰 걱정은 필드를 얻는 것입니다. 여기는 pkitem 인 이름입니다. –

0

이있는 요소를 찾아 하나는 XPath를 사용하여 요소를 찾기 또는 value 속성이 있음을 일치 SelectElement에서 옵션을 얻으려면 String.Empty

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

또는

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 
관련 문제