我正在尝试使用selenium驱动程序进行自动化测试。
我已经安装了这个NuGet包:
我的简单代码和错误:
这是我的项目结构,参考文献:
我不知道问题是什么或在哪里?
错误System.InvalidOperationException:
中有View Detail ....Stack Tracking消息:
at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities)
at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities)
at OpenQA.Selenium.Chrome.ChromeDriver..ctor(ChromeDriverService service, ChromeOptions options, TimeSpan commandTimeout)
at OpenQA.Selenium.Chrome.ChromeDriver..ctor(ChromeOptions options)
at OpenQA.Selenium.Chrome.ChromeDriver..ctor()
at SeleniumFirst.Program.Main(String[] args) in c:\Users\roberto.cardenas\Documents\Visual Studio 2013\Projects\SeleniumFirst\SeleniumFirst\Program.cs:line 17
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
答案 0 :(得分:1)
chromedriver.exe需要位于aplication dir中,并且propriet输出为“始终复制”。
其他方法是在创建对象时向chromedriver构造函数发送路径。这允许您将所有驱动程序放在当前项目中的目录中。例如:
var path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\Drivers";
var chromeDriver = new ChromeDriver(path);
// It will search in "[...]bin\Debug[or Release]\Drivers\chromedriver.exe"
答案 1 :(得分:1)
看起来您需要更新Chrome驱动程序。这是一个错误https://bugs.chromium.org/p/chromedriver/issues/detail?id=1257 最新版本为2.21
答案 2 :(得分:0)
确定问题出在chromedriver.exe文件中。我使用NuGet包管理器安装了2.10版,但我正在阅读post并执行了这些步骤。但是为了避免帖子的链接断开的答案,有解决方案:
因此,要解决此问题,您只需导航到http://chromedriver.storage.googleapis.com/index.html并下载最后一个稳定版本:
在我的情况下是2.20所以我导航到:http://chromedriver.storage.googleapis.com/index.html?path=2.20/
后来我将此驱动程序版本复制到C:目录并创建了驱动程序的路径:
class Program
{
static void Main(string[] args)
{
string DRIVER_PATH = @"C:\";
//create a reference to our browser
IWebDriver chrome = new ChromeDriver(DRIVER_PATH);
//navigate to google page
chrome.Navigate().GoToUrl("http://www.google.com");
IWebElement search = chrome.FindElement(By.Name("q"));
search.SendKeys("executeautomation");
}
}
一切都好。