我想使用网络Api通话启动Chrome浏览器。我可以在运行Visual Studio时使用以下代码启动它 网址:http://localhost:64001/api/values
public class ValuesController : ApiController
{
//private TechTalk.SpecFlow.ITestRunner testRunner;
// GET api/values
public IEnumerable<string> Get()
{
IWebDriver driver;
var webDriversPath = HttpContext.Current.Server.MapPath("~/bin/WebDrivers");
driver = new ChromeDriver(webDriversPath);
return new string[] { "value1", "value2" };
}
}
但问题是,发布到IIS时尝试访问URL:http://localhost/MyApp/Api/Values
我收到以下异常。
<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>
The request was aborted: The operation has timed out.
</ExceptionMessage>
<ExceptionType>System.Net.WebException</ExceptionType>
<StackTrace>
at System.Net.HttpWebRequest.GetResponse() at OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest request)
</StackTrace>
</Error>
你能帮我解决这个问题。
答案 0 :(得分:3)
花了一些时间为自己工作,这条路线对我有用。通过IIS运行selenium会出现一些问题,因为用户我有权限问题或运行GUI会话时出现问题而没有与GUI本身关联,因此它将运行&#34;运行&#34;但是卡住了。对我有用的将要求您改变您的Web API实现以利用远程Web驱动程序。不应该是一个大问题......更糟糕的是你可能不得不改变一堆driver.FindElementsById到driver.FindElements(By.Id(&#34;&#34;));
那么对我有用的是
这里的重要注意事项让我绊倒了一些,从命令提示符而不是powershell运行它。不知道为什么但是PowerShell与-D命令行参数没有很好的配合,并且一直给我类路径错误。
java -Dwebdriver.chrome.driver = C:/utilities/selenium/chromedriver.exe -jar c:\ utilities \ selenium \ selenium-server-standalone-2.48.2.jar -port 5556 -browser&#34; browserName = chrome,version = ANY,maxInstances = 10,platform = WINDOWS&#34;
public IHttpActionResult Get()
{
var opts = new ChromeOptions();
var driver = new RemoteWebDriver(new Uri("http://127.0.0.1:5556/wd/hub"), opts);
driver.Navigate().GoToUrl("http://google.com");
return Ok(new { msg = "All done" });
}
请注意,webdriver URL上的5556端口与#3的命令行参数中指定的端口相同。如果您更改了该端口,则还需要在此处进行更改。如果你没有提供端口参数,我相信默认值是4444。
如果您有兴趣在网格模式下运行selenium,请查看以下链接:
这对我有用,而且很多问题/答案都更具有java特定性,所以希望这有助于.net实现。