FindElement(By.Id)不起作用

时间:2011-10-21 14:12:48

标签: c# selenium-webdriver

这是我第一次尝试使用Selenium,我遇到了“FindElement(By.Id”)的问题。我的脚本使用了几种By.Name方法,它们运行正常。

这是我的代码:

// Enter the user name and password 
IWebElement username = FF_Browser.FindElement(By.Name("txtUserName"));
username.SendKeys("user1");
IWebElement password = FF_Browser.FindElement(By.Name("txtPassword"));
password.SendKeys("pw1");
// Click the Login button
FF_Browser.FindElement(By.Name("btnLogon")).Click();

try 
{
bool loginResult = FF_Browser.FindElement(By.Id("lblUserName")).Text == "user1";
return loginResult;   
}
catch (NoSuchElementException)
{
return false;
}

问题是FindElement(By.Id("lblUserName"))永远找不到此元素。我在源代码中对其进行了双重和三重检查,它绝对是'lblUserName'

这是Selenium中的错误吗?

[编辑]

我现在用Firefox和IE驱动程序尝试了这个代码,两者都表现出相同的行为。我一定错过了一些基本的东西?在尝试查找元素之前,我尝试刷新浏览器,但结果相同。

1 个答案:

答案 0 :(得分:4)

回答我自己的问题:当然只有初学者会跳过这个简单的东西:我试图找到的元素是在一个框架中。

这一行FF_Browser.SwitchTo().Frame("ApplicationHeaderFrame");解决了这个问题。