我在Docker容器中使用Canopy,并且由于多个连接错误而想在调用canopy.core.start时将端口指定为4444,而不是指定的最终随机端口错误:ConnectFailure(拒绝连接)
-或无法启动驱动程序。
let chromeOptions = OpenQA.Selenium.Chrome.ChromeOptions()
chromeOptions.AddArgument("--no-sandbox")
chromeOptions.AddArgument("--disable-extensions")
chromeOptions.AddArgument("--disable-gpu")
chromeOptions.AddArgument("--disable-client-side-phishing-detection")
chromeOptions.AddArgument("--disable-suggestions-service")
chromeOptions.AddArgument("--safebrowsing-disable-download-protection")
chromeOptions.AddArgument("--no-first-run")
chromeOptions.AddArgument("--allow-insecure-localhost");
chromeOptions.AddArgument("--port=4444"); // Not taking effect; see below
let chromeNoSandbox = ChromeWithOptions(chromeOptions)
canopy.configuration.chromeDir <- "."
start chromeNoSandbox
Error: ConnectFailure (Connection refused) <--- Multiple of these in a docker container
Starting ChromeDriver 2.35.528139 (47ead77cb35ad2a9a83248b292151462a66cd881) on port 36479 <-- How to specify this?
最佳答案
没有简单的方法可以做到这一点!
Canopy如何启动WebDriver实例是通过调用OpenQA.Selenium.Chrome.ChromeDriverService.CreateDefaultService("<path to the chromedriver executable on runner machine>")
。 (当然,对于所有其他浏览器都是如此)。
问题是这种方法,根据文档,它按定义返回了随机端口(这样做是为了确保并行运行不会获得相同的端口并崩溃。谢天谢地,这种情况发生的可能性很低)。
您可以尝试做类似let a = OpenQA.ChromeDriverService.CreateDefaultService("<path>")
和a.Port <- <port number>
,的操作,但是我不知道如何使用生成的WebDriverService
作为测试的执行者。port=4444
上的ChromeOptions
位不起作用,因为这不是Chrome(或一般来说是浏览器)选项。它是一个WebDriver。
我在项目的tracker上发布了一个问题。希望我们能尽快得到答案...
关于docker - 如何在Canopy( Selenium 库)中设置ChromeDriver端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49448201/