首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么在WebDriver中找不到这个元素?

为什么在WebDriver中找不到这个元素?
EN

Stack Overflow用户
提问于 2015-05-18 21:36:44
回答 2查看 157关注 0票数 0

我是从WebDriver和Java的UI自动化世界开始的。当我试图选择组合框的一个元素时,我遇到了一个问题。这是代码:

代码语言:javascript
运行
复制
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):

代码语言:javascript
运行
复制
<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>

我在标签select中看到,ID属性是正确的,但是异常总是会发生。我尝试使用too方法来定位像"By.id“这样的元素,但是也不起作用。我能做什么?

致以问候!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-18 21:39:53

在这种情况下,可能会有几个可能的原因。

  • 元素是在iframe中查找的。使用driver.switchTo().frame(driver.findElement(somethting));
  • 元素查找比加载时间更快。在本例中,使用显式等待。WebElement myDynamicElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(By.id("term")));
  • 有重复的身份证。尝试使用select[id='term'][class='termination']作为cssSelector

当然,还可以使用By.id(),因为id是可用的。

票数 2
EN

Stack Overflow用户

发布于 2015-05-18 21:48:56

您需要等待获得页面加载,然后尝试获取其元素--这段代码将帮助您做到这一点。

代码语言:javascript
运行
复制
WebDriverWait wait = new WebDriverWait(driver, 5);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//*[@id='term']")));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30313215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档