私は以下の図のようにドロップダウンを持っています。その "More ..."オプションをクリックすると、次の10個のデータが読み込まれます。次のクリックでさらに10個のデータがロードされます。同様に、リスト全体がロードされます。すべてをロードした後、リスト全体にアクセスする方法。このコードで動的に読み込む選択ボックスからデータを取得する方法
Select select=new Select(element);
List<WebElement> options= select.getOptions();
int j=0;
for(WebElement ele:options)
{
str=ele.getText();
if(str.contains("More"))
{
//this is to click the "More.." using selenium
Actions action = new Actions(BaseClass.driver);
action.moveToElement(Filter.FilterApplied(),200, 0).click().build().perform();
Filter.FilterApplied().sendKeys(str);
action.moveToElement(Filter.FilterApplied()).click().build().perform();
//to assign newly loaded list to a new array
Select se=new Select(Filter.FilterApplied());
options2=se.getOptions();
System.out.println("size of new list"+options2.size());
}
}
私は、ページ内のリストをクリックしてロードすることができonce..but anothe対象に、新たにロードされたリストをコピーすることはできませんよ。 options2.size()は、古い配列リストが再びoptions2にロードされるのと同じ古い配列長を返します。どうしてこんなことに?新しいarraylistは正しくロードする必要がありますか? これはセレンを試しました。どんな方法でもいいです.. JQueryはもっと効率的なメソッドを持っていますか?教えてください。私は、最初はページに完全にロードされていないが、もっとクリックすると読み込まれるリストにアクセスする必要があります。
HTML:
<select id="filterSel" name="filterSel" class="fixed-size" onchange="fnLoadAccountslegEnt(this.value); " onclick="closeDropDown();" size="1" style="top: 6.5px; margin: 0px; width: 58%; height: 30px;">
<option value=""></option>
<option value="a">Account:00</option>
<option value="a0">Account:0</option>
<option value="More" style="color: blue;">More...</option>
</select>
は当初、これは "もっと" 他のオプションは次のように、ロードされているクリックthere.Onされます。あなたはあなたのようにすべての要素を格納できる、ということで行わたら
public static void clickMoreDropDownElement(WebDriver driver){
Select select=new Select(driver.findElement(By.id("filterSel")));
//while(select.getOptions().contains("More")){
List<WebElement> allElements = select.getOptions();
Iterator<WebElement> itr = allElements.iterator();
while(itr.hasNext()){
WebElement currentElement = itr.next();
if(currentElement.getText().equals("More...")){
currentElement.click();
System.out.println("Clicked More..");
clickMoreDropDownElement(driver);
}
}
}
:ドロップダウンで発生したすべてのMore
オプションをクリックし、次のメソッドを使用することができます
<select id="filterSel" name="filterSel" class="fixed-size" onchange="fnLoadAccountslegEnt(this.value); " onclick="closeDropDown();" size="1" style="top: 6.5px; margin: 0px; width: 58%; height: 30px;">
<option value=""></option>
<option value="a">Account:00</option>
<option value="a0">Account:0</option>
<option value="a1" title="Account: 1">Account: 1</option>
<option value="a2" title="Account: 10 ">Account: 10 </option>
<option value="More" style="color: blue;">More...</option>
</select>
あなたは同じものをhtmlで投稿できますか? – kushal
@kushalツ私はHTML – aswathy
を追加しました。 'Select select = new Select(driver.findElement(By.id(" close "))); while(select.getOptions()。contains( "More")){ select.selectByVisibleText( "More ..."); } リスト options = select.getOptions(); ' –
kushal