WebDriverException: lỗi không xác định: Tệp DevToolsActivePort không tồn tại trong khi cố gắng khởi chạy Trình duyệt Chrome


152

Tôi đang cố gắng khởi chạy chrome với một URL, trình duyệt khởi chạy và nó không làm gì sau đó.

Tôi thấy lỗi dưới đây sau 1 phút:

Unable to open browser with url: 'https://www.google.com' (Root cause: org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
  (Driver info: chromedriver=2.39.562718 (9a2698cba08cf5a471a29d30c8b3e12becabb0e9),platform=Windows NT 10.0.15063 x86_64) (WARNING: The server did not provide any stacktrace information)

Cấu hình của tôi:

  • Chrome: 66
  • Trình duyệt Chrome: 2,39,56

PS mọi thứ hoạt động tốt trong Firefox


1
Bạn có thể cập nhật câu hỏi với mã gây ra lỗi này không?
GPT14

Tôi đã nhận được lỗi này khi vncserver bị sập và tôi không còn hiển thị X nữa
xtian

Câu trả lời:


71

Thông báo lỗi này ...

org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist 

... ngụ ý rằng ChromeDriver không thể khởi tạo / tạo ra một WebBrowser mới, tức là phiên Trình duyệt Chrome .

Các thử nghiệm mã của bạn và thông tin phiên bản của tất cả các nhị phân sẽ cho chúng tôi một số gợi ý về những gì sai.

Tuy nhiên, theo Add --disable-dev-shm-used vào các cờ khởi chạy mặc định dường như việc thêm đối số --disable-dev-shm-usagesẽ tạm thời giải quyết vấn đề.

Nếu bạn muốn bắt đầu / mở rộng phiên Trình duyệt Chrome mới , bạn có thể sử dụng giải pháp sau:

System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized"); // open Browser in maximized mode
options.addArguments("disable-infobars"); // disabling infobars
options.addArguments("--disable-extensions"); // disabling extensions
options.addArguments("--disable-gpu"); // applicable to windows os only
options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
options.addArguments("--no-sandbox"); // Bypass OS security model
WebDriver driver = new ChromeDriver(options);
driver.get("https://google.com");

vô hiệu hóa-dev-shm-cách sử dụng

Theo cơ sở_switches.cc disable-dev-shm-usage dường như chỉ hợp lệ trên hệ điều hành Linux :

#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
// The /dev/shm partition is too small in certain VM environments, causing
// Chrome to fail or crash (see http://crbug.com/715363). Use this flag to
// work-around this issue (a temporary directory will always be used to create
// anonymous shared memory files).
const char kDisableDevShmUsage[] = "disable-dev-shm-usage";
#endif

Trong cuộc thảo luận Thêm tùy chọn để sử dụng / tmp thay vì / dev / shm David đề cập:

Tôi nghĩ rằng nó sẽ phụ thuộc vào cách / dev / shm và / tmp được gắn kết. Nếu cả hai đều được gắn kết dưới dạng tmpfs, tôi cho rằng sẽ không có sự khác biệt nào. nếu vì lý do nào đó / tmp không được ánh xạ là tmpfs (và tôi nghĩ được ánh xạ là tmpfs theo mặc định bởi systemd), quản lý bộ nhớ chia sẻ chrome luôn ánh xạ các tệp vào bộ nhớ khi tạo tệp chia sẻ ẩn danh, vì vậy ngay cả trong trường hợp đó cũng không nên khác biệt nhiều. Tôi đoán bạn có thể buộc các bài kiểm tra từ xa với cờ được kích hoạt và xem nó diễn ra như thế nào.

Về lý do tại sao không sử dụng theo mặc định, nó đã bị nhóm bộ nhớ chia sẻ đẩy lùi, tôi đoán nó có nghĩa là nó nên được sử dụng / dev / shm cho bộ nhớ chia sẻ theo mặc định.

Cuối cùng, tất cả những điều này sẽ được chuyển sang sử dụng memfd_create, nhưng tôi không nghĩ rằng điều đó sẽ xảy ra bất cứ lúc nào, vì nó sẽ yêu cầu tái cấu trúc đáng kể việc quản lý bộ nhớ Chrome.


Ra ngoài

Đây là liên kết đến câu chuyện Sandbox .


8
Nhưng điều gì gây ra lỗi cụ thể này DevToolsActivePort file doesn't existvà tại sao nó đột nhiên xuất hiện?

3
Các mục "Xem xét bổ sung" - có vẻ như chúng khá phù hợp với vấn đề này. Đặc biệt là loại tình huống mà nó đã không được thiết lập chính xác những gì gây ra vấn đề.
Pete Kelley

5
Từ phần bị xóa trong bài đăng của @ DebanjanB, điều này có thể được gây ra bằng cách sử dụng Chromedriver không hỗ trợ phiên bản Chrome đã cài đặt. Điều này có thể xảy ra, ví dụ, nếu chrome được nâng cấp mà không nâng cấp Chromedriver.
expz

Điều này được sử dụng để giải quyết vấn đề cho tôi, nó không có trên hệ thống hiện tại của tôi (Ubuntu 18 + Python 3.7)
tw0000

3
Trong trường hợp điều này giúp bất cứ ai khác, chỉ cần thêm disable-dev-shm-usagelà không đủ. Tôi cũng phải thêm --no-sandboxđể làm cho nó hoạt động. Đây là bản sửa lỗi hoàn chỉnh cho tôi cho Selenium-java:chromeOptions.addArguments("--no-sandbox", "--disable-dev-shm-usage");
George Pantazes

52

Tôi bắt đầu thấy vấn đề này vào thứ Hai 2018-06-04. Các bài kiểm tra của chúng tôi chạy mỗi ngày trong tuần. Dường như điều duy nhất đã thay đổi là phiên bản google-chrome (đã được cập nhật thành hiện tại) JVM và Selenium là các phiên bản gần đây trên hộp Linux (Java 1.8.0_151, selenium 3.12.0, google-chrome 67.0.3394.62 và xvfb-chạy).
Cụ thể việc thêm các đối số " --no-sandbox " và " --disable-dev-shm-used " đã dừng lỗi. Tôi sẽ xem xét các vấn đề này để tìm thêm thông tin về hiệu ứng và các câu hỏi khác như trong những gì đã kích hoạt google-chrome để cập nhật.

ChromeOptions options = new ChromeOptions();
        ...
        options.addArguments("--no-sandbox");
        options.addArguments("--disable-dev-shm-usage");

Tôi muốn làm rõ rằng mã này đã chạy mỗi ngày trong tuần trên hộp Ubuntu Linux, nhưng mã tương đương trên máy tính để bàn Windows vẫn chạy tốt ngay cả vào thứ Hai. Tôi không tìm thấy thông tin nào về chức năng của tệp DevToolsActivePort để làm gì và điều đó cũng hữu ích. PK
Pete Kelley

1
Các tùy chọn này đã dừng lỗi cho tôi quá. pd: sử dụng ngăn xếp Rails.
Mario Pérez

Tôi vẫn nhận được [java] [1536892035.965][SEVERE]: Timed out receiving message from renderer: 60.000lỗi ngay cả với điều này
Jonathan

@Jonathan - Xin chào! bạn có thể cung cấp thêm một số chi tiết, như hệ điều hành nào, phiên bản nào của các thành phần bạn đang sử dụng hoặc cách bạn đang gọi quy trình không?
Pete Kelley

@Toby: Chào! Tôi không có ý ám chỉ rằng vị trí đã tạo ra sự khác biệt, chỉ là việc sử dụng tối thiểu các tham số đó. Có vẻ như một số giá trị mặc định mà tôi đã dựa vào đã bị thay đổi khi việc nâng cấp xảy ra. Bất kỳ chi tiết nào khác hệ thống hoặc tin nhắn của bạn mà bạn cung cấp có thể giúp đỡ.
Pete Kelley

34

Chúng tôi đã có những vấn đề tương tự trên nô lệ jenkins của chúng tôi (máy linux) và đã thử tất cả các tùy chọn ở trên.

Điều duy nhất được giúp đỡ là thiết lập lập luận

chrome_options.add_argument('--headless')

Nhưng khi chúng tôi điều tra thêm, nhận thấy rằng màn hình XVFB không khởi động thuộc tính và điều đó gây ra lỗi này. Sau khi chúng tôi sửa màn hình XVFB, nó đã giải quyết vấn đề.


2
điều này đã giải quyết vấn đề của tôi, khi chạy bằng C # (trong trường hợp này, tùy chọn trông như thế này: tùy chọn.AddArgument ("- không đầu");
ozz

XVFB là vấn đề đối với tôi
lucaswxp

23

Tôi đã có cùng một vấn đề trong python. Ở trên đã giúp. Đây là những gì tôi đã sử dụng trong python -

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('/path/to/your_chrome_driver_dir/chromedriver',chrome_options=chrome_options)

Tôi đã giải quyết vấn đề của mình với nâng cấp chrome (tôi đã có chromedrive mới nhất), do đó tôi cũng phải nâng cấp trình duyệt thông thường.
axel_ande

18

Cập nhật:

Tôi có thể khắc phục sự cố và bây giờ tôi có thể truy cập chrome với url mong muốn.

Kết quả thử các giải pháp được cung cấp:

Tôi đã thử tất cả các cài đặt như được cung cấp ở trên nhưng tôi không thể giải quyết vấn đề

Giải thích về vấn đề này:

Theo quan sát của tôi, tệp DevToolsActivePort không tồn tại được tạo ra khi chrome không thể tìm thấy tham chiếu của nó trong thư mục scoped_dirXXXXX.

Các bước thực hiện để giải quyết vấn đề

  1. Tôi đã giết tất cả các quy trình chrome và quy trình trình điều khiển chrome.
  2. Đã thêm mã dưới đây để gọi chrome

    System.setProperty("webdriver.chrome.driver","pathto\\chromedriver.exe");    
    ChromeOptions options = new ChromeOptions();
    options.setExperimentalOption("useAutomationExtension", false);
    WebDriver driver = new ChromeDriver(options);
    driver.get(url);
    

Sử dụng các bước trên tôi đã có thể giải quyết vấn đề.

Cảm ơn câu trả lời của bạn.


3
Bạn có biết những gì ảnh hưởng đến useAutomationExtension có? Nó vô hiệu hóa các phần mở rộng để tự động hóa (ảnh chụp màn hình / điều khiển, v.v.) không? Không phải sự ra đời của DevTools sẽ khiến thay đổi này không ảnh hưởng? codereview.chromium.org/2785413002
Toby

10

Tôi đã phải đối mặt với cùng một vấn đề gần đây và sau một số thử nghiệm và lỗi nó cũng làm việc cho tôi.

PHẢI TRÊN TOP:

options.addArguments("--no-sandbox"); //has to be the very first option

BaseSeleniumTests.java

public abstract class BaseSeleniumTests {

    private static final String CHROMEDRIVER_EXE = "chromedriver.exe";
    private static final String IEDRIVER_EXE = "IEDriverServer.exe";
    private static final String FFDRIVER_EXE = "geckodriver.exe";
    protected WebDriver driver;

    @Before
    public void setUp() {
        loadChromeDriver();
    }

    @After
    public void tearDown() {
        if (driver != null) {
            driver.close();
            driver.quit();
        }
    }

    private void loadChromeDriver() {
        ClassLoader classLoader = getClass().getClassLoader();
        String filePath = classLoader.getResource(CHROMEDRIVER_EXE).getFile();
        DesiredCapabilities capabilities = DesiredCapabilities.chrome();
        ChromeDriverService service = new ChromeDriverService.Builder()
                .usingDriverExecutable(new File(filePath))
                .build();
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--no-sandbox"); // Bypass OS security model, MUST BE THE VERY FIRST OPTION
        options.addArguments("--headless");
        options.setExperimentalOption("useAutomationExtension", false);
        options.addArguments("start-maximized"); // open Browser in maximized mode
        options.addArguments("disable-infobars"); // disabling infobars
        options.addArguments("--disable-extensions"); // disabling extensions
        options.addArguments("--disable-gpu"); // applicable to windows os only
        options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
        options.merge(capabilities);
        this.driver = new ChromeDriver(service, options);
    }

}

GoogleSearchPageTraditableSeleniumTests.java

@RunWith(SpringRunner.class)
@SpringBootTest
public class GoogleSearchPageTraditionalSeleniumTests extends BaseSeleniumTests {

    @Test
    public void getSearchPage() {
        this.driver.get("https://www.google.com");
        WebElement element = this.driver.findElement(By.name("q"));
        assertNotNull(element);
    }

}

pom.xml

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <scope>test</scope>
        </dependency>
</dependencies>

Hấp dẫn ! Làm thế nào để bạn tạo một tập tin .side? Đây có phải là thứ mà một người QA làm thủ công không?
Nital

Bạn sử dụng Selenium IDE để ghi lại một bài kiểm tra. Kết quả là một tập tin .side. Nó chạy tốt khi sử dụng IDE, nhưng tôi đang cố gắng chạy nó bằng cách sử dụng selenium-side-runner nhưng gặp phải tất cả các loại vấn đề với chromedriver.
pabram

phải là lựa chọn đầu tiên - dành nhiều ngày để tìm haha ​​này
cuniculus

Cảm ơn! Thêm "--no-sandbox" giải quyết vấn đề của tôi.
matabares

7

Trong trường hợp của tôi trong môi trường sau đây:

  • Windows 10
  • Con trăn 3.7.5
  • Google Chrome phiên bản 80 và ChromeDriver tương ứng trong đường dẫn C:\Windows
  • Selen 3.141.0

Tôi cần thêm các đối số --no-sandbox--remote-debugging-port=9222vào ChromeOptionsđối tượng chạy mã với tư cách là người dùng quản trị viên bằng cách ăn trưa Powershell / cmd với tư cách quản trị viên.

Đây là đoạn mã liên quan:

options = webdriver.ChromeOptions()
options.add_argument('headless')
options.add_argument('--disable-infobars')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--no-sandbox')
options.add_argument('--remote-debugging-port=9222')
driver = webdriver.Chrome(options=options)

1
tương tự đối với tôi với docker với Ubuntu 18.04, py3.7, chrome (trình điều khiển) 80
patroqueeet

Điều này làm việc cho tôi mà không có vấn đề hơn nữa. Tôi mới bắt đầu gặp vấn đề này ngày hôm nay, nhưng vì câu trả lời của bạn nên nó nhanh chóng được sửa! Môi trường của tôi về cơ bản giống như của bạn.
Ryan Harris

5

Tôi đã gặp vấn đề này trên Ubuntu 20 với Python Selenium sau khi lần đầu tiên tải xuống chromedriver riêng biệt và sau đó sử dụng sudo apt install chromium-browserMặc dù chúng là cùng một phiên bản, điều này vẫn tiếp tục xảy ra.

Cách khắc phục của tôi là sử dụng trình điều khiển chrome được cung cấp đi kèm với gói repo nằm ở

/snap/bin/chromium.chromedriver

driver = webdriver.Chrome(chrome_options=options, executable_path='/snap/bin/chromium.chromedriver')

4

Như đã nêu trong câu trả lời khác này :

Thông báo lỗi này ... ngụ ý rằng ChromeDriver không thể khởi tạo / tạo ra một WebBrowser mới, tức là phiên Trình duyệt Chrome.

Trong số các nguyên nhân có thể, tôi muốn đề cập đến một thực tế rằng, trong trường hợp bạn đang chạy một Chromium không đầu qua Xvfb, bạn có thể cần phải exportcác DISPLAYbiến: trong trường hợp của tôi, tôi đã có tại chỗ (theo khuyến cáo) các --disable-dev-shm-usage--no-sandboxlựa chọn, tất cả mọi thứ là chạy tốt, nhưng trong một bản cài đặt mới chạy Ubuntu mới nhất (tại thời điểm viết) Ubuntu 18.04, lỗi này bắt đầu xảy ra và cách khắc phục duy nhất có thể là thực thi export DISPLAY=":20"(đã khởi động Xvfb trước đó Xvfb :20&).


OMG Cảm ơn bạn. Tôi đã thực hiện một vài thay đổi cho container docker của chúng tôi và tôi vô tình bỏ xvfb. Tôi sẽ không bao giờ tìm thấy cái này nếu bạn chưa để nó ở đây :-).
Ryan Shillington

3

Tôi cũng gặp phải vấn đề này khi tích hợp với máy chủ jenkins, tôi đã sử dụng người dùng root cho công việc jenkin, vấn đề đã được khắc phục khi tôi thay đổi người dùng thành người dùng khác . Tôi không chắc tại sao lỗi này xảy ra cho người dùng root.

  • Google Chrome Phiên bản 71.0
  • Phiên bản ChromeDriver 2.45
  • Phiên bản CentOS7 1.153

Người dùng không phải root đã làm việc cho tôi, tôi đã có phiên bản trình điều khiển chrome chính xác cho crom.
TicJit

2

Trong trường hợp của tôi, điều đó đã xảy ra khi tôi cố gắng sử dụng hồ sơ người dùng mặc định của mình:

...
options.addArguments("user-data-dir=D:\\MyHomeDirectory\\Google\\Chrome\\User Data");
...

Điều này đã kích hoạt chrome để sử dụng lại các quy trình đã chạy trong nền, theo cách đó, quá trình đó được bắt đầu bởi chromedriver.exe chỉ đơn giản là đã kết thúc.

Độ phân giải: tiêu diệt tất cả các quá trình chrome.exe đang chạy trong nền.


Tôi đã có một vấn đề tương tự, nhưng trong linux - các quy trình chrome của tôi không được thoát đúng sau khi tập lệnh bị lỗi và chúng được sử dụng lại không chính xác. giết chúng đã giải quyết được vấn đề
jeremycg 27/12/18

2

cập nhật khả năng trong conf.js như

exports.config = {
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['todo-spec.js'],
  capabilities: {
    browserName: 'chrome',
    chromeOptions: {
      args: ['--disable-gpu', '--no-sandbox', '--disable-extensions', '--disable-dev-shm-usage']
    }
  },

};

2

Trong trường hợp của tôi, tôi đã cố gắng tạo một jar có thể chạy được trên HĐH Windows bằng trình duyệt chrome và muốn chạy tương tự trên chế độ không đầu trong hộp unix với CentO trên đó. Và tôi đã chỉ nhị phân của mình cho một trình điều khiển mà tôi đã tải xuống và đóng gói với bộ của tôi. Đối với tôi, vấn đề này tiếp tục xảy ra bất kể việc thêm vào dưới đây:

ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
options.addArguments("--no-sandbox");
System.setProperty("webdriver.chrome.args", "--disable-logging");
System.setProperty("webdriver.chrome.silentOutput", "true");
options.setBinary("/pointing/downloaded/driver/path/in/automationsuite");
options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
options.addArguments("disable-infobars"); // disabling infobars
options.addArguments("--disable-extensions"); // disabling extensions
options.addArguments("--disable-gpu"); // applicable to windows os only
options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
options.addArguments("window-size=1024,768"); // Bypass OS security model
options.addArguments("--log-level=3"); // set log level
options.addArguments("--silent");//
options.setCapability("chrome.verbose", false); //disable logging
driver = new ChromeDriver(options);

Giải pháp mà tôi đã thử và làm việc cho tôi là, tải xuống chrome và các công cụ của nó trên hộp máy chủ VM / Unix, cài đặt và trỏ tệp nhị phân này vào bộ tự động hóa và chơi lô tô! Nó hoạt động :)

Lệnh tải xuống:

wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

Lệnh cài đặt:

sudo yum install -y ./google-chrome-stable_current_*.rpm

Bộ cập nhật với đường dẫn nhị phân bên dưới của google-chrome:

options.setBinary("/opt/google/chrome/google-chrome");

Và nó hoạt động!


Chúng ta thêm mã này vào đâu? Tôi thấy không có mã C # trong tệp .side của mình
pabrams

1

Tôi đã có cùng một vấn đề, nhưng trong trường hợp của tôi, chrome trước đây đã được cài đặt trong thư mục tạm thời của người dùng, sau đó đã được cài đặt lại vào các tệp Chương trình. Vì vậy, bất kỳ giải pháp được cung cấp ở đây đã không giúp tôi. Nhưng nếu cung cấp đường dẫn đến chrome.exe thì tất cả đều hoạt động:

chromeOptions.setBinary("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");

Tôi hy vọng điều này sẽ giúp được ai đó =)


dường như hoàn toàn ngược lại với sửa lỗi @shiuu bên dưới
Toby

1

Không có giải pháp làm việc cho tôi. Nhưng đây là một cách giải quyết:

maxcounter=5
for counter in range(maxcounter):
    try:           
        driver = webdriver.Chrome(chrome_options=options,
                          service_log_path=logfile,
                          service_args=["--verbose", "--log-path=%s" % logfile])
        break
    except WebDriverException as e:
        print("RETRYING INITIALIZATION OF WEBDRIVER! Error: %s" % str(e))
        time.sleep(10)
        if counter==maxcounter-1:
            raise WebDriverException("Maximum number of selenium-firefox-webdriver-retries exceeded.")

1

Bạn có thể gặp lỗi này chỉ đơn giản là chuyển các đối số xấu cho Chrome. Ví dụ: nếu tôi chuyển qua "headless"làm đối số cho C # ChromeDriver, nó sẽ kích hoạt rất tốt. Nếu tôi mắc lỗi và sử dụng cú pháp sai "--headless", tôi sẽ nhận được DevToolsActivePort file doesn't existlỗi.


1

Tôi gặp vấn đề tương tự, tôi đang sử dụng trình duyệt UBUNTU, PYTHON và OPERA . trong trường hợp của tôi, vấn đề bắt nguồn từ vì tôi đã có một phiên bản operadriver lỗi thời.

Giải pháp: 1. Đảm bảo bạn cài đặt phiên bản trình duyệt opera mới nhất (không sử dụng opera beta hoặc nhà phát triển opera), để truy cập trang web opera chính thức và tải xuống từ đó phiên bản opera_urdy mới nhất.

  1. Cài đặt trình điều khiển opera mới nhất (nếu bạn đã cài đặt trình điều khiển opera, trước tiên bạn phải xóa nó bằng sudo rm ...)

wget https://github.com/operasoftware/operachromiumdo/release/doad/v.80.0.3987.100/operadriver_linux64.zip

   unzip operadriver_linux64.zip
   sudo mv operadriver /usr/bin/operadriver
   sudo chown root:root /usr/bin/operadriver
   sudo chmod +x /usr/bin/operadriver

trong trường hợp của tôi mới nhất là 80.0,3987 như bạn có thể thấy

  1. Ngoài ra, tôi cũng đã cài đặt chromedriver (nhưng vì tôi đã làm nó trước khi thử nghiệm, tôi không biết điều này là cần thiết) để cài đặt chromedriver, hãy làm theo các bước ở bước trước: v

  2. Hãy tận hưởng và cảm ơn tôi!

Mã selen mẫu

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Opera()
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.quit()

0

Có vẻ như có nhiều nguyên nhân có thể gây ra lỗi này. Trong trường hợp của chúng tôi, lỗi xảy ra do chúng tôi có hai dòng mã sau:

System.setProperty("webdriver.chrome.driver", chromeDriverPath);
chromeOptions.setBinary(chromeDriverPath);

Nó được giải quyết bằng cách loại bỏ dòng thứ hai.


dường như hoàn toàn ngược lại với sửa chữa @ sergiy-konoplyaniy ở trên: '(
Toby

Trong setBinary của chúng tôi, chúng tôi đã cố gắng đặt trình điều khiển chrome, có vẻ như là một lỗi. Bản sửa lỗi của @ sergiy-konoplyaniy đặt chrome.exe thông qua setBinary.
shiuu

Bạn đã có mã này ở đâu? Tất cả những gì tôi có là một tệp .side và nó không có mã C # trong đó.
pabram

0

Tôi gặp vấn đề tương tự khi chạy Chrome thông qua Behat / Mink và Selenium trong bộ chứa Docker. Sau một vài lần nghịch ngợm, tôi đã đến nơi sau đây behat.ymlcung cấp các công tắc được đề cập ở trên. Lưu ý rằng tất cả chúng đều được yêu cầu để tôi chạy thành công.

default:
    extensions:
        Behat\MinkExtension:
            base_url: https://my.app/
            default_session: selenium2
            selenium2:
                browser: chrome
                capabilities:
                    extra_capabilities:
                        chromeOptions:
                            args:
                                - "headless"
                                - "no-sandbox"
                                - "disable-dev-shm-usage"

0

Trong trường hợp của tôi, tôi đang ở trong môi trường Kubernetes nơi tôi không thể sử dụng TMPDIR mặc định vì nó sẽ lấp đầy thư mục tạm thời với rác.

Vì vậy, tôi đã sử dụng điều này để sử dụng một tmpdir khác:

driver = new ChromeDriver(new ChromeDriverService.Builder()
                    .withEnvironment(ImmutableMap.of("TMPDIR", customTmpPath))
                    .build(), options);

Nhưng bây giờ tôi đã nâng cấp mọi thứ lên bản mới nhất, điều này dường như không còn hoạt động nữa. Tôi sẽ cần phải tìm một cách mới để làm điều này.


0

Nó xảy ra khi chromedriver không tìm ra được chrome gỡ lỗi cổng nào đang sử dụng.

Một nguyên nhân có thể là do lỗi mở với HKEY_CURRENT_USER \ Software \ Chính sách \ Google \ Chrome \ UserDataDir

Nhưng trong trường hợp cuối cùng của tôi, đó là một số nguyên nhân không xác định khác.

May mắn thay, thiết lập số cổng làm việc thủ công:

final String[] args = { "--remote-debugging-port=9222" };
options.addArguments(args);
WebDriver driver = new ChromeDriver(options);

2
Có phải là một cổng không đổi? Hoặc tôi có thể tìm nó ở đâu?
Mike Shiyan

0

Số cổng sai trong trường hợp của tôi. Kiểm tra xem số cổng khi khởi động máy chủ Selenium có giống như trong tập lệnh của bạn không.


-2

Tôi giải quyết vấn đề này bằng cách cài đặt yum -y install gtk3-devel gtk3-devel-docs", nó hoạt động tốt

Công việc của tôi là:

Selenium Version 3.12.0
ChromeDriver Version v2.40
Chrome 68 level

Trước:
nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Sau:
nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây


9
Từ đánh giá: Vui lòng không đăng văn bản bằng hình ảnh. EDIT câu trả lời của bạn và thay thế những hình ảnh bằng văn bản. Cảm ơn
sunıɔ qɐp

1
Điều này có giải quyết vấn đề cho bất cứ ai? Điều này không giải quyết được vấn đề cho tôi
Bendram

-2

Vì đây là thông báo tích cực nhất cho loại lỗi này, tôi muốn đề cập đến giải pháp của mình (sau khi dành hàng giờ để khắc phục lỗi này).

Trên Ubuntu 18.04, sử dụng Chrome 70 và Chromedriver 2.44 và Python3 tôi vẫn gặp lỗi DevToolsActivePort tương tự, ngay cả khi tôi tắt tất cả các tùy chọn được liệt kê ở trên. Tệp nhật ký chromedriver cũng như ps cho thấy rằng chromedriver mà tôi đã đặt trong chrome_options.binary_location đang chạy, nhưng nó luôn báo lỗi DevToolsActivePort. Khi tôi xóa chrome_options.binary_location = '....' và thêm nó vào việc tạo webdo, tôi sẽ làm cho nó hoạt động tốt. webdo.Chrom ('/ đường dẫn đến ... / chromedriver', chrome_options = chrome_options)

Cảm ơn mọi người vì những bình luận của bạn khiến tôi hiểu và giải quyết vấn đề.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.