运行C#Selenium测试时获取System.ArgumentException
我正在学习如何用C#编写selenium测试,在尝试运行下面的测试用例时遇到了这个错误。它在以下方面失败:IWebElement query=driver.FindElement(By.Name(“q”)) 代码:运行C#Selenium测试时获取System.ArgumentException,c#,visual-studio,testing,selenium-webdriver,C#,Visual Studio,Testing,Selenium Webdriver,我正在学习如何用C#编写selenium测试,在尝试运行下面的测试用例时遇到了这个错误。它在以下方面失败:IWebElement query=driver.FindElement(By.Name(“q”)) 代码: 有什么想法吗?提前谢谢你 检查并确保您的ChromeDriver()版本与本地计算机上的版本匹配 下面是一个XUnit测试,它将使用NuGet软件包重新创建您的问题,在该软件包中,如果您的计算机上没有webdriver,您可以手动指定要下载的webdriver版本: [Fac
有什么想法吗?提前谢谢你 检查并确保您的
ChromeDriver()
版本与本地计算机上的版本匹配
下面是一个XUnit测试,它将使用NuGet软件包重新创建您的问题,在该软件包中,如果您的计算机上没有webdriver,您可以手动指定要下载的webdriver版本:
[Fact]
public void ChromeDriverThrows_ArgumentException_True()
{
var google = "https://www.google.com/";
var message = "elementDictionary (Parameter 'The specified
dictionary does not contain an element
reference')";
// Specify a different of ChromeDriver than what is installed on machine.
_ = new DriverManager().SetUpDriver(
"https://chromedriver.storage.googleapis.com/2.25/chromedriver_win32.zip",
Path.Combine(Directory.GetCurrentDirectory(), "chromedriver.exe"),
"chromedriver.exe"
);
var driver = new ChromeDriver();
driver.Navigate().GoToUrl(google);
var exception = Assert.Throws<ArgumentException>(() => driver.FindElement(By.Name("q")));
Assert.True(message == exception.Message, $"{exception.Message}");
}
我已经写了相当多的硒测试,答案对我来说并不明显,但是,类似的,似乎是引发这个异常的原因。似乎与缺少的元素ID有关。不确定这是否有帮助,但确实有帮助。我个人会调试并逐步完成Selenium代码。
[TestMethod]
public void SearchForCheese()
{
using (var driver = new ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)))
{
driver.Navigate().GoToUrl("http://www.google.com");
// Find text input
IWebElement query = driver.FindElement(By.Name("q"));
// Enter something to search for
query.SendKeys("cheese");
// Submit form
query.Submit();
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(d => d.Title.Contains("cheese"));
Assert.AreEqual(driver.Title, "cheese - Google Search");
};
}
[Fact]
public void ChromeDriverThrows_ArgumentException_True()
{
var google = "https://www.google.com/";
var message = "elementDictionary (Parameter 'The specified
dictionary does not contain an element
reference')";
// Specify a different of ChromeDriver than what is installed on machine.
_ = new DriverManager().SetUpDriver(
"https://chromedriver.storage.googleapis.com/2.25/chromedriver_win32.zip",
Path.Combine(Directory.GetCurrentDirectory(), "chromedriver.exe"),
"chromedriver.exe"
);
var driver = new ChromeDriver();
driver.Navigate().GoToUrl(google);
var exception = Assert.Throws<ArgumentException>(() => driver.FindElement(By.Name("q")));
Assert.True(message == exception.Message, $"{exception.Message}");
}
new DriverManager().SetUpDriver(new ChromeConfig(), VersionResolveStrategy.MatchingBrowser);