可能重复:
硒的webdriver - get的选项从隐藏的选择
我有一个页面上选择一个大问题。
码:
<select name="fw3k_ad_input_et_type_group" class=""
id="_id_fw3k_ad_input_et_type_group"
onchange=" eurotax.change_type_group( this.value ); "
style="display: none; ">
<option value="0"> --- odaberite tip --- </option>
<option value="-1" class="special">> nema mog tipa </option>
<option value="16390">CD</option>
<option value="17605">S</option>
<option value="17636">SE</option>
</select>
<a href="" class="fs_item" id="fs_item_0" style=""> --- odaberite tip --- </a>
视图:
http://imageshack.us/f/7/screenshotfrom201209111.png/
选择隐藏和A HREF =“”是取决于所选的选项,改变它的文本可见部分。
我真的不知道如何管理。 我可以得到JavascriptExecutor所有选项,我可以使用a.click()查看下拉框,但我不知道如何点击一些选项。
我曾尝试使用选择类和.getOptions()方法,但它并没有采用隐藏式选择工作,我不能改变A HREF =“”文本。
:(
请帮我一些例子。
第一个方法:它不是单击使用相同的JS的任何元素的问题。 正如你知道如何得到任何选项remaning最后一个动作是进行点击。 这应该为你工作:
WebElement hiddenWebElement =driver.findElement(By(..selector of the element....));
((JavascriptExecutor)driver).executeScript("arguments[0].click()",hiddenWebElement);
第二个方式 :
String cssSelector= ...//i gave them in your previous question
JavascriptExecutor js = (JavascriptExecutor) driver;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("var x = $(\'"+cssSelector+"\');");
stringBuilder.append("x.click();");
js.executeScript(stringBuilder.toString());
第三个办法:用行动制造商,拥有先进的用户操作的API。 你可以阅读一下这里和代码将是水木清华这样的:
WebElement mnuElement;
WebElement submnuElement;
mnEle = driver.findElement(By.Id("mnEle")).click();
sbEle = driver.findElement(By.Id("sbEle")).click();
Actions builder = new Actions(driver);
// Move cursor to the Main Menu Element
builder.moveToElement(mnEle).Perform();
// Giving 5 Secs for submenu to be displayed
Thread.sleep(5000L);
// Clicking on the Hidden SubMenu
driver.findElement(By.Id("sbEle")).click();
您也可以一些额外的信息在这里希望这在某种程度上可以帮助你)
有点困惑与问题,但你有没有尝试过你
WebElement element = driver.findElement(By.id("fw3k_ad_input_et_type_group"));
Select select = new Select(element);
然后使用
select.selectByValue(value);
select.selectByVisibleText(text);
select.selectByIndex(index);
driver.findElement(By.name("_id_fw3k_ad_input_et_type_group")).sendKeys("16390");
工作对我来说非常类似的东西。