硒在铬中找不到元素

时间:2013-12-15 17:00:30

标签: c# google-chrome selenium

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。

问题是,驱动程序找不到元素,尽管它存在于视图中。

如何让它发挥作用?

1 个答案:

答案 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,但它并没有真正起作用,我实际上并不需要它,所以我恐怕不得不留给你找一个解决方案......祝你好运。