只允许本地连接Chrome和Selenium webdriver。

37

我正在使用Chrome webdriver 2.23和Selenium 2.53.1。

我尝试了很多次,但无法解决问题。每当我运行我的Selenium脚本时,它都会给我以下错误:

Starting ChromeDriver 2.23.409699 (49b0fa931cda1caad0ae15b7d1b68004acd05129) on port 12162
Only local connections are allowed.

请您能否指明具体的错误信息和浏览器版本细节。 - Siva
3
这本身并不是错误,即使它可能会显示为红色。这只是一个信息提示,告诉你根据配置,Selenium WebDriver 只接受来自本地主机的连接。 - David Avendasora
12个回答

15

这只是一条信息提示,你的问题可能是chromedriver和selenium-server-standalone版本不匹配引起的。

尝试使用最新的selenium 3.0版本,对我来说它很好用。

请注意,对于selenium 3.0,您需要先指定驱动程序,然后再指定selenium服务器。

使用新的selenium 3.0,您应该使用以下命令:

java -Dwebdriver.chrome.driver=path_to_chrome_driver -jar selenium-server-standalone-3.0.0-beta2.jar 如果您使用的是低于3.0版本的selenium,则需要以相反的顺序排列selenium和驱动程序,例如:

java -Dwebdriver.chrome.driver=path_to_chrome_driver -jar selenium_server.jar

当您启动Selenium服务器时,请在包含chromedriver和selenium服务器的目录中打开控制台并执行上述命令。


1
在哪里需要使用这个命令java -Dwebdriver.chrome.driver=path_to_chrome_driver -jar selenium-server-standalone-3.0.0-beta2.jar?能否请您解释一下。先谢谢。 - Sanwal Riaz
谢谢,这很有帮助。对于我的情况来说,这是版本不匹配的问题 :) - sykez

8

下面是一个可用的技术栈:

一些注意事项:

1)运行sudo Xvfb:10 -ac &

2)运行export DISPLAY=:10

3)运行java -jar“YOUR_PATH_TO/selenium-server-standalone-2.53.1.jar”-Dwebdriver.chrome.driver=“YOUR_PATH_TO/chromedriver.2.27” -Dwebdriver.chrome.whitelistedIps=“localhost”


1
如果您在图形环境中,步骤#3也适用。您甚至不需要whitelistedIps标志。谢谢! - corysimmons

7

首先,您看到的不是错误,而是信息提示。

运行此驱动程序后,它将使您的脚本能够访问并在Google Chrome上运行命令。

这可以通过在本地网络中运行的脚本 (只允许本地连接) 或在外部网络中运行的脚本 (允许所有远程连接) 来完成。使用本地连接选项始终更安全。默认情况下,您的Chromedriver可通过端口9515进行访问。

如果您希望允许所有连接而不仅仅是本地连接,请参见 this answer


如果您的Chromedriver只显示上述两条消息(如问题所述),那么就存在问题。它必须显示这样一条消息,表示已成功启动。
Starting ChromeDriver 83.0.4103.39 (ccbf011cb2d2b19b506d844400483861342c20cd-refs/branch-heads/4103@{#416}) on port 9515
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.

为了解决这个问题...
步骤1:检查您的Chromedriver版本
$ chromedriver --version

ChromeDriver 83.0.4103.39 (ccbf011cb2d2b19b506d844400483861342c20cd-refs/branch-heads/4103@{#416})

我的版本是83.0.4103.39

步骤2:检查您的Chrome浏览器版本

打开Google Chrome。

Options --> Help --> About Google Chrome

enter image description here

或者打开终端并运行以下命令(适用于Ubuntu)。

$ google-chrome --version

Google Chrome 83.0.4103.61

我的版本是:版本 83.0.4103.61 步骤三:比较Chromedriver和Google Chrome的版本 这两个版本都以83开头,这意味着它们是兼容的。因此,当您运行下面的命令时,应该会看到以下类似的消息。
$ chromedriver 

Starting ChromeDriver 83.0.4103.39 (ccbf011cb2d2b19b506d844400483861342c20cd-refs/branch-heads/4103@{#416}) on port 9515
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully. 

如果您的版本不匹配,则会看到以下消息。您将不会看到这条线:ChromeDriver was started successfully.
$ chromedriver

Starting ChromeDriver 80.0.3987.106 (f68069574609230cf9b635cd784cfb1bf81bb53a-refs/branch-heads/3987@{#882}) on port 9515
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.

第四步:下载正确版本的Chromedriver

下载与您的浏览器版本相匹配的正确版本。使用此页面进行下载。下载完成后,提取内容并将其移动到以下两个文件夹之一。打开以下两个文件夹,并查看当前的Chromedriver是否在其中。如果它在两个文件夹中都有,请替换两个。然后再执行第三步。

/usr/bin/chromedriver
/usr/local/bin/chromedriver

6
  1. Check the version of your installed Chrome browser.

  2. Download the compatible version of ChromeDriver from

    https://sites.google.com/a/chromium.org/chromedriver/

  3. Set the location of the compatible ChromeDriver to:

     System.setProperty("webdriver.chrome.driver", "C:\\Users\\your_path\\chromedriver.exe");
    
  4. Run the Test again.

现在应该没问题了。

4
你需要将--whitelisted-ips=传递给Chrome Driver(而不是Chrome!),如果你从代码中直接使用ChromeDriver(而不是使用RemoteWebDriver),那么这不应该成为你的问题。
如果你远程使用它(例如,Selenium Hub/Grid),则需要在节点启动时设置系统属性,就像在命令中一样。
java -Dwebdriver.chrome.whitelistedIps= testClass etc...

或者通过传递JAVA_OPTS环境变量来使用Docker。

  chrome:
    image: selenium/node-chrome:3.141.59
    container_name: chrome
    depends_on:
      - selenium-hub
    environment:
      - HUB_HOST=selenium-hub
      - HUB_PORT=4444
      - JAVA_OPTS=-Dwebdriver.chrome.whitelistedIps=

2

我按照我的朋友建议尝试了以下方法,对我非常有效:

代码如下:

1)下载chromedriver。

2)代码:

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

public class Sel {
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.setProperty("webdriver.chrome.driver", "C:\\Users\\Downloads\\chromedriver_win32\\chromedriver.exe"); // path of chromedriver 
    WebDriver driver = new ChromeDriver();

      driver.get("https://google.ca");
      driver.manage().window().maximize();
      driver.getTitle();

  }
}

1

对于我来说,更新chromedriverselenium版本就解决了这个问题。

然而,这只是一条信息提示,并不是真正的错误。 如果你的程序在打印出这条信息后仍然以 exit code 0 的形式通过,那么说明执行是正常的。


1

我按照以下步骤解决了问题: a. 升级到最新的Chrome版本,清除缓存并关闭Chrome浏览器 b. 下载最新的Selenium 3.0


1
C#:
    ChromeOptions options = new ChromeOptions();

    options.AddArgument("C:/Users/username/Documents/Visual Studio 2012/Projects/Interaris.Test/Interaris.Tes/bin/Debug/chromedriver.exe");

    ChromeDriver chrome = new ChromeDriver(options);

对我有用。


0

抱歉回复晚了,但是仍然想让您知道,我也遇到了同样的问题,所以我使用了更新版本的chromedriver,即2.28,适用于更新的chrome浏览器,即55到57版本,这解决了我的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接