我想使用 Web 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>
你能帮我解决这个问题吗?
我自己花了一些时间在这方面,这条路线对我有用。通过 IIS 运行 selenium 时会出现一些问题,因为用户可能存在权限问题或在运行 GUI 会话时遇到问题而未与 GUI 本身关联,因此它将“运行”但会卡住。对我有用的方法需要您更改 Web API 实现以利用远程 Web 驱动程序。应该没什么大不了的...更糟糕的情况是你可能不得不将一堆 driver.FindElementsById 更改为 driver.FindElements(By.Id(""));
所以对我有用的是
这里的重要说明让我有些困惑,从命令提示符而不是 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 "browserName=chrome, 版本=任意,maxInstances=10,平台=WINDOWS”
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 实现。
您在windows中执行了以下命令吗? java -Dwebdriver.chrome.driver=C:/utilities/selenium/chromedriver.exe -jar c:utilitiesseleniumselenium-server-standalone-2.48.2.jar -port 5556 -浏览器“browserName=chrome,version=ANY,maxInstances=10,platform=WINDOWS”。我得到一个错误:“java”不被识别为内部或外部命令, 可执行程序或批处理文件。