Selenium 1コードをSelenium 2に変換していますが、ドロップダウンメニューでラベルを選択したり、ドロップダウンの選択した値を取得する簡単な方法が見つかりません。 Selenium 2でそれを行う方法を知っていますか?
Selenium 1では機能するが2では機能しない2つのステートメントを次に示します。
browser.select("//path_to_drop_down", "Value1");
browser.getSelectedValue("//path_to_drop_down");
driver.findElement(By.id("id_dropdown_menu")).click();
driver.findElement(By.xpath("xpath_from_seleniumIDE")).click();
がんばろう
常に使用するためのRubyに、以下を追加:
module Selenium
module WebDriver
class Element
def select(value)
self.find_elements(:tag_name => "option").find do |option|
if option.text == value
option.click
return
end
end
end
end
end
値を選択できるようになります。
browser.find_element(:xpath, ".//xpath").select("Value")
使用してみてください:
Selenium.select("id=items","label=engineering")
または
Selenium.select("id=items","index=3")
上記でjandersonが投稿したものと同様のオプションは、Selenium 2の.GetAttributeメソッドを使用するだけです。これを使用すると、探している特定の値またはラベルを持つアイテムを取得できます。これを使用して、要素にラベル、スタイル、値などがあるかどうかを判断できます。これを行う一般的な方法は、ドロップダウンの項目をループして、目的の項目を見つけて選択することです。 C#で
int items = driver.FindElement(By.XPath("//path_to_drop_Down")).Count();
for(int i = 1; i <= items; i++)
{
string value = driver.FindElement(By.XPath("//path_to_drop_Down/option["+i+"]")).GetAttribute("Value1");
if(value.Conatains("Label_I_am_Looking_for"))
{
driver.FindElement(By.XPath("//path_to_drop_Down/option["+i+"]")).Click();
//Clicked on the index of the that has your label / value
}
}
このメソッドは、ドロップダウン用に選択された値を返します。
public static String getSelected_visibleText(WebDriver driver, String elementType, String value)
{
WebElement element = Webelement_Finder.webElement_Finder(driver, elementType, value);
Select Selector = new Select(element);
Selector.getFirstSelectedOption();
String textval=Selector.getFirstSelectedOption().getText();
return textval;
}
その間
String textval = Selector.getFirstSelectedOption();
element.getText();
ドロップダウンのすべての要素を返します。
あなたはこのようにすることができます:
public void selectDropDownValue(String ValueToSelect)
{
webelement findDropDownValue=driver.findElements(By.id("id1")) //this will find that dropdown
wait.until(ExpectedConditions.visibilityOf(findDropDownValue)); // wait till that dropdown appear
super.highlightElement(findDropDownValue); // highlight that dropdown
new Select(findDropDownValue).selectByValue(ValueToSelect); //select that option which u had passed as argument
}