我开始使用WebDriver和Java进行UI自动化。当我尝试选择组合框的元素时,我遇到了问题。这是代码:
WebDriver driver = new FirefoxDriver();
driver.get("http://intersite.com/");
new Select(driver.findElement(By.xpath(".//*[@id='term']"))); //Exception happens in this line org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":".//*[@id='term']"}
这是网站上的代码(我使用Firepath来了解Xpath):
<select name="term" onchange="getTipDoc('');" id="term" class="termination"><option value="">-- Select an Option --</option>
<option value="OPT1">Option 1</option>
<option value="OPT2">Option2</option>
</select>
我在标签选择中看到,ID属性是正确的但是异常总是发生。我尝试使用其他方法来定位元素,如“By.id”,但也不起作用。我该怎么办?
问候!
答案 0 :(得分:2)
在这种情况下可能会出现几种可能的原因
iframe
内。使用driver.switchTo().frame(driver.findElement(somethting));
WebElement myDynamicElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(By.id("term")));
请参阅this select[id='term'][class='termination']
作为cssSelector 当然,使用By.id()
因为ID可用。
答案 1 :(得分:1)
在尝试获取其元素之前,您需要等待获取页面,此代码将帮助您完成此操作
WebDriverWait wait = new WebDriverWait(driver, 5);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//*[@id='term']")));