我在NUnit中运行时遇到以下错误,
我找到一个元素并将其存储在变量中,并且在尝试选择元素时,我收到了错误。尝试以这种方式使用
IWebElement fromitem = WebDriver.FindElement(By.Id("from"));
但同样的错误仍然存在。
有什么方法可以选择元素吗?
注意:我用firebug验证了元素id,似乎没有问题。
以下代码,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Support.UI;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Support.Events;
using OpenQA.Selenium.Support.PageObjects;
namespace SeleniumTests
{
[TestFixture]
public class Sel
{
public static IWebDriver WebDriver;
private String baseURL;
[SetUp]
public void SetupTest()
{
WebDriver = new FirefoxDriver();
baseURL = "http://www.x-rates.com/calculator.html";
}
[TearDown]
public void TeardownTest()
{
WebDriver.Quit();
}
[Test]
public void newtest()
{
WebDriver.Navigate().GoToUrl(baseURL + "/");
var fromitem = WebDriver.FindElement(By.Id("from"));
var toitem = WebDriver.FindElement(By.Id("to"));
var fromval = new SelectElement(fromitem); //Error occurs
var toval = new SelectElement(toitem);
fromval.SelectByText("USD - US Dollar");
toval.SelectByText("INR - Indian Rupee");
WebDriver.FindElement(By.LinkText("Currency Calculator")).Click();
var curval = WebDriver.FindElement(By.CssSelector("span.ccOutputRslt")).GetAttribute("Value");
var expectedValue = 61.456825;
Thread.Sleep(900);
Assert.AreEqual(expectedValue, curval.Trim());
}
}
}
答案 0 :(得分:2)
SelectElement
类只能用于实际的HTML <select>
元素。在您提供的页面中,相关元素是<input>
元素,通过CSS和JavaScript添加功能,使其能够像下拉列表一样运行。因此,尝试将其与SelectElement
类一起使用将抛出异常,指示该元素的类型不正确。
“文件不存在”错误消息是红色鲱鱼。它只是因为NUnit试图向您展示抛出异常的源代码行,这是WebDriver源代码的一部分。该行代码抛出的异常应显示在NUnit中的某个位置,该异常应包含相应的信息性消息。