2012-07-20 79 views
0

背景:硒選擇下拉作爲字符串傳遞變量的選項

  • 卡片紙 - 這包含了程序的詳細信息,股票
  • 客戶賣卡屏的股票和國家的位置 - 當你向顧客出售一張新卡,你必須輸入他們的地址。一旦你把他們的國家,具體領域(州/地址行2 /郵政編碼)成爲強制性或自願。

問題是兩個正在使用的國家數據庫是不一樣的,可以有所不同。 「德國製造」的卡片顯示和「德意志聯邦共和國的」賣卡屏上

我的流程:

1)搜索發出預卡擺脫卡片紙的國家 - 分配這個變量爲一個字符串即aString

2)出售該卡

3)在國家下拉框 - 如果aString是在該列表中,選擇aString,如果沒有則創建「其他thens」名單捕捉變化

我的代碼始終告訴我該字符串不在列表中,countrydropdown打印輸出爲false,甚至當我與兩國匹配

任何幫助將是測試它極大的讚賞

Boolean countrydropdown = "xpath=//select[@id='address.country']/option]".indexOf(aString) > 0; 
System.out.println("countrydropdown"); 
System.out.println(countrydropdown); 


<tr> 
    <td class="labelFormReq">*</td> 
    <td class="labelForm">Country:</td> 
    <td> 
     <select id="address.country" onchange="validateAndSubmit(this, 'selectCountryEvent');" name="address.country"> 
      <option value="">Please Select</option> 
      <option value="4">Afghanistan</option> 
      <option value="248">Alan Islands </option> 
      <option value="8">Albania</option> 
      <option value="12">Algeria</option> 
      <option value="16">American Samoa</option> 
      <option value="20">Andorra</option> 
      <option value="24">Angola</option> 
      <option value="660">Anguilla</option> 
      <option value="10">Antarctica</option> 
      <option value="28">Antigua and Barbuda</option> 
      <option value="32">Argentina</option> 
      <option value="51">Armenia</option> 
      <option value="533">Aruba</option> 
      <option value="36">Australia</option> 
     </select> 
    </td> 
</tr> 
+0

你知道寫' 「的XPath = //選擇[@ ID = 'address.country'] /選項]」'不會奇蹟般地選擇任何東西,你需要用方法調用來覆蓋它,對吧? – 2012-07-20 19:32:53

+0

不,我沒有,當我鍵入//選擇[@id ='address.country']/option到xpather,它帶來了國家的名單,所以我應該能夠索引,不應該我? – Omz 2012-07-21 00:07:54

回答

0
Boolean countrydropdown = "xpath=//select[@id='address.country']/option]".indexOf(aString) > 0; 

並不真正搜索元素。實際上,它在文本"xpath=//select[@id='address.country']/option]"中尋找aString。爲了使它返回任何有用的東西,你必須用方法調用來包裝它。看到這一點:

Boolean countrydropdown = selenium.isElementPresent("xpath=//select[@id='address.country']/option[text()='" + aString + "']"); 

做出一點點更具有可讀性和公約感知:

boolean countryDropdown = selenium.isElementPresent("xpath=id('address.country')/option[text()='" + aString + "']"); 

它返回true當且僅當一個<option>孩子adress.country元素的文本等於存在於你的aString

或者,如果你想少oneliney:

boolean countryDropdown = false; 

String[] countryOptions = selenium.getSelectOptions("id=address.country"); 
for (String option : countryOptions) { 
    if (option.equals(aString)) { 
     countryDropdown = true; 
     break; 
    } 
} 
+0

另外,你是否確定要使用Selenium RC而不是Selenium WebDriver? Selenium RC在一年前已被棄用,並且沒有任何發展(不像WebDriver),因爲它受到一些嚴重的技術限制... – 2012-07-21 08:33:08

+1

感謝slanec,我會盡快嘗試一下我可以訪問系統。 – Omz 2012-07-21 08:37:36

+1

我試過使用網絡驅動程序,但它在我測試的系統上無法正常工作。測試需要在IE和Web驅動程序中完成,然後繼續選擇下一個無線電選項卡,如果這是完全正常的話。也許我會在rc中完成我的測試,然後切換到網絡驅動程序。我花了幾天的時間試圖讓它工作! – Omz 2012-07-21 08:41:30