SetUpTest:
public void SetupTest()
{
IWebDriver driver = new ChromeDriver();
selenium = new DefaultSelenium(
"localhost",
4444,
"*googlechrome C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe",
"http://localhost");
selenium.Start();
verificationErrors = new StringBuilder();
}
测试功能:
[Test]
public void LoginTest()
{
selenium.Open("http://localhost:8085/");
// login
for (int second = 0; ; second++)
{
if (second >= 60) Assert.Fail("timeout");
try
{
if (IsElementPresent(By.CssSelector("#username"))) break;
}
catch (Exception)
{ }
Thread.Sleep(1000);
}
driver.FindElement(By.Id("username")).SendKeys("admin");
driver.FindElement(By.Id("password")).SendKeys("123456");
driver.FindElement(By.CssSelector(".btn.btn-primary")).Click();
}
private bool IsElementPresent(By by)
{
try
{
driver.FindElement(by);
return true;
}
catch (NoSuchElementException)
{
return false;
}
}
我通过以下链接下载Chrome驱动程序:http://chromedriver.storage.googleapis.com/index.html
最新版本是2.7。
我的Chrome版本是31.0.1650.63。
问题是,驱动程序找不到元素,尽管它存在于视图中。
如何让它发挥作用?
答案 0 :(得分:2)
我建议使用Selenium IDE并在Selenium IDE中录制时手动登录。它将帮助您识别要选择的元素的正确名称。
我使用类似的东西
using Selenium;
ISelenium sel = new DefaultSelenium("localhost", 4444, "*firefox", "");
sel.Start();
sel.Open("www.whateveryourwebsideis.com");
sel.Type("id=user_email", "username");
sel.Type("id=user_password", "password");
sel.Click("name=commit");
<强>更新强> 在我看来好像你没有使用你的IDriver导航。
你有
selenium.Open("http://localhost:8085/");
但我想你应该使用
driver.Navigate().GoToUrl("http://localhost:8085/");
尝试
string htmlSource = driver.PageSource;
加载页面后检查您是否确实有任何HTML来搜索元素。
我刚刚尝试安装ChromeDriver,但它并没有真正起作用,我实际上并不需要它,所以我恐怕不得不留给你找一个解决方案......祝你好运。