2016-08-22 17 views
0

regiondropdownUnable to saveUI/web Pageドロップダウンボックスに表示されているすべてのチェックボックスからテキストを取得して、これらの値をdbと比較したいとします。私を助けてください。私はoptions.size()でサイズを数えることができますが、dbの各文字列と比較するテキスト/文字列を取得することはできません。今以下のコードでspanからテキストを取得する方法

//Click on Select Box 
Thread.sleep(500); 
driver.findElement(By.xpath(".//*[@id='DivZone']/div/button")).click(); 
Thread.sleep(500); 
List<WebElement> options =  
driver.findElements(By.xpath("//input[contains(@name, 
'multiselect_ddlZone')]")); 
//List<WebElement> options = driver.findElements(By.cssSelector(".ui- 
corner-all.ui-state-hover>span")); 
List<String> all_elements_text=new ArrayList<>(); 
if(region!=null) 
{ 
for(int i=1; i<options.size(); i++) 
{ 
all_elements_text.add(options.get(i).getText()); 
System.out.println(options.get(i).getText()); 
boolean isThere = false; 
for (int j = 0; j < region.size(); j++) 
{ 
if 
(options.get(i).getText().equalsIgnoreCase(region.get(j))) { 
// Code to display warning 
isThere = true; 
} 
} 
if(isThere) 
System.out.println(options.get(i).getText()+" is matched 
with Database data"); 
else 
System.out.println(options.get(i).getText()+" is not matched 
with Database data"); 
} 
} 

debug

+0

テキスト/文字列を取得できないということはどういう意味ですか?私はそこに何か例外や何か他のものを持っていますか? –

+0

例外はありません。変数は空白で、テキストを格納しようとしています –

+0

「System.out.println(options.get(i).getAttribute( "textContent")); 'として試してみてください。 .. –

答えて

0

、それぞれ "オプション" は、任意のテキストを持っていない "入力" WebElement、です。その後、スパンコンテンツを引き出し、リスト項目を検索しますか :

List<WebElement> options = driver.findElements(By.cssSelector("ul.ui-multiselect-checkboxes li label[for*='ddlZone'] span")); 
+0

すべてのオプションにテキストが必要です。ここで、あなたのコードでは、テキストを取得するためにそれを書く方法は?私はCSSのあなたのコードを使用するオプションのサイズを取得していない....付属の画像を参照してください –

+0

ああ!私の悪い。もちろん、UIには他にも多くのドロップダウンメニューがあります。私は "for"属性に "ddlZone"を持つラベル要素だけに制限するためのパスを編集しました。それはうまくいくはずです。 (それがdd1ZoneかddlZoneかどうかは分かりません) –

0

残念ながらgetText()が機能しない場合、あなたは以下のようにgetAttribute("textContent"‌​)を使用してみてください: -

System.out.println(options.get(i).getAttribute("textContent"‌)); 

あるいは、以下のようにgetAttribute("innerHTML"‌)を使用してみてください: -

System.out.println(options.get(i).getAttribute("innerHTML"‌)); 
+0

@Breaks Software、上記のパスで保存することはできません。スクリーンショットを見つけてください –

+0

ありがとう、ソフトウェアを破る、その作業は、同じパスが他のドロップダウンのために働いていません。以下はコード –

+0

のために働いていますリスト zonelist = driver.findElements(By.cssSelector( "ul.ui -multiselect-checkboxes li label [for * = 'ddlZone'] span ")); リスト all_zonelist = new ArrayList <>();用 \t(INTのZUI = 0; ZUI

0

はそれを「www.tripadvisor.in」の試みを与え、それをすることができます(この例ではループを制限するために 'break'ステートメントを使用しています)。以下は試したコードです

public class SelectList { 
WebDriver driver; 

By currencyDrop = By.xpath(".//*[@id='CURRENCYPOP']/span"); 
By currency = By.xpath(".//*[@id='GLOBAL_CURRENCY_PICKER']/ul/li"); 

@Test 
public void f() throws InterruptedException { 

driver = new FirefoxDriver(); 
driver.get("https://www.tripadvisor.in/"); 
driver.manage().window().maximize(); 
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

driver.findElement(currencyDrop).click(); 

//Below is the list of options present in dropdown(per DB) 
String[] expList = {"INR ₹ Indian Rupees", 
        "USD US$ U.S. Dollars", 
        "EUR € Euros"}; 

List <WebElement>countryList = driver.findElements(currency); 

int i =0; 

for(WebElement curr:countryList){ 
    if (i>2){ 
     break; 
    } 
    if (curr.getText().equals(expList[i])){ 
     System.out.println("ActCurrency" + curr.getText()); 
     System.out.println("ExpCurrency" + expList[i]); 
i++; 
    } 
} 
} 
}