我想从下拉列表中选择一个值,然后使用Selenium webdriver单击Next按钮。在Selenium IDE中,它运行良好,但是当我尝试在Eclipse中使用相同的代码时,它无法正常工作。我尝试了不同的解决方案,但每次收到Unable to locate element
错误消息。以下是其中一个例子。
主题中的异常:"main" org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"name","selector":"formcode"}
我尝试但从未奏效的解决方案:
1)
new Select(driver.findElement(By.name("formcode"))).selectByVisibleText("Weather Stopper(R) System Plus Ltd. Warranty");
driver.findElement(By.name("vact")).click();
2)
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//select[@name='formcode']")));
3)
new Select(driver.findElement(By.xpath("//select[@name='formcode']"))).selectByIndex(1);
driver.findElement(By.xpath("//td/input")).click();
HTML代码为:
<tr>
<TD><SELECT NAME="formcode" size="1">
<option value="">*** Select Warranty Type ***
<OPTION VALUE="1PLUS48">Weather Stopper(R) System Plus Ltd. Warranty<OPTION VALUE="2GOLD52">Golden Pledge</SELECT></TD>
<input type="hidden" name=low_slope_sqs value="">
<input type="hidden" name=addcode value="">
<input type="hidden" name=h_code_no value="">
<input type="hidden" name=steep_slope_sqs value="">
<input type="hidden" name="credit_account"><SPAN ID=messid></SPAN><table border=0 cellpadding=5 cellspacing=0 align=center>
<TR>
<TD>
<input type=button name="vact" value="Next >>" onclick=submitit('Next1')></TD>
<input type="hidden" name=entrydone value="">
</TR>
</TABLE>
答案 0 :(得分:0)
要找到iframe
内的元素,您需要先切换到
driver.switchTo.frame(frame ID);
// or
driver.switchTo.frame(driver.findElement(frameLocator));
并切换回来
driver.switchTo().defaultContent();
// or
driver.switchTo().window(driver.getWindowHandle());
作为旁注,当您使用"Weather Stopper(R) System Plus Ltd. Warranty"
等唯一字符的长文本时,最好使用selectByValue
或selectByIndex
。在按文字选择时,select
甚至可能会落入您错过的一个空白区域。