WebDriverException: kesalahan tidak dikenal: File DevToolsActivePort tidak ada saat mencoba memulai Browser Chrome

153

Saya mencoba meluncurkan chrome dengan URL, browser meluncurkan dan tidak melakukan apa-apa setelah itu.

Saya melihat kesalahan di bawah ini setelah 1 menit:

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)

Konfigurasi saya:

  • Chrome: 66
  • ChromeBrowser: 2.39.56

PS semuanya bekerja dengan baik di Firefox

Kumar Sampath
sumber
1
Bisakah Anda memperbarui pertanyaan dengan kode yang menyebabkan kesalahan ini?
GPT14
Saya menerima kesalahan ini ketika vncserver crash dan saya tidak punya tampilan X lagi
xtian

Jawaban:

71

Pesan kesalahan ini ...

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

... menyiratkan bahwa ChromeDriver tidak dapat memulai / menelurkan WebBrowser baru yaitu sesi Browser Chrome .

Uji coba kode Anda dan informasi versi semua binari akan memberi kami beberapa petunjuk tentang apa yang salah.

Namun per Add --disable-dev-shm-use ke flag-flag peluncuran default tampaknya menambahkan argumen --disable-dev-shm-usagesementara akan menyelesaikan masalah.

Jika Anda ingin memulai / span sesi Browser Chrome baru Anda dapat menggunakan solusi berikut:

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");

disable-dev-shm-use

Per base_switches.cc disable-dev-shm-usage tampaknya hanya valid di Linux OS :

#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

Dalam diskusi Tambahkan opsi untuk menggunakan / tmp alih-alih / dev / shm David menyebutkan:

Saya pikir ini akan tergantung pada bagaimana / dev / shm dan / tmp dipasang. Jika keduanya dipasang sebagai tmpfs saya berasumsi tidak akan ada perbedaan. jika karena alasan tertentu / tmp tidak dipetakan sebagai tmpfs (dan saya pikir dipetakan sebagai tmpfs secara default oleh systemd), manajemen memori bersama chrome selalu memetakan file ke dalam memori saat membuat file bersama anonim, sehingga bahkan dalam kasus itu tidak boleh banyak perbedaan. Saya kira Anda bisa memaksa tes telemetri dengan bendera diaktifkan dan lihat bagaimana hasilnya.

Adapun mengapa tidak digunakan secara default, itu didorong kembali oleh tim memori bersama, saya kira masuk akal itu harus menggunakan / dev / shm untuk memori bersama secara default.

Pada akhirnya semua ini harus bergerak untuk menggunakan memfd_create, tetapi saya tidak berpikir itu akan terjadi dalam waktu dekat, karena itu akan memerlukan refactoring manajemen memori Chrome secara signifikan.


Outro

Berikut tautan ke kisah Sandbox .

DebanjanB
sumber
8
Tapi apa yang menyebabkan kesalahan spesifik ini DevToolsActivePort file doesn't exist, dan mengapa tiba-tiba mulai muncul?
3
Item "Pertimbangan Tambahan" - mereka terlihat cukup dapat diterapkan untuk masalah ini. Terutama situasi seperti ini di mana belum ditetapkan apa yang menyebabkan masalah.
Pete Kelley
5
Dari bagian yang dihapus dari pos @ DebanjanB, ini dapat disebabkan oleh penggunaan Chromedriver yang tidak mendukung versi Chrome yang diinstal. Ini dapat terjadi, misalnya, jika chrome ditingkatkan tanpa memutakhirkan Chromedriver.
expz
Ini digunakan untuk memecahkan masalah bagi saya, itu tidak pada sistem saya saat ini (Ubuntu 18 + Python 3.7)
tw0000
3
Dalam hal ini membantu orang lain, menambahkan saja disable-dev-shm-usagetidak cukup. Saya juga harus menambahkan --no-sandboxuntuk membuatnya berfungsi. Ini adalah perbaikan lengkap bagi saya untuk Selenium-java:chromeOptions.addArguments("--no-sandbox", "--disable-dev-shm-usage");
George Pantazes
52

Saya mulai melihat masalah ini pada Senin 2018-06-04. Tes kami berjalan setiap hari kerja. Tampaknya satu-satunya hal yang berubah adalah versi google-chrome (yang telah diperbarui ke saat ini) JVM dan Selenium adalah versi terbaru di Linux box (Java 1.8.0_151, selenium 3.12.0, google-chrome 67.0.3396.62, dan jalankan-xvfb).
Khusus menambahkan argumen " --no-sandbox " dan " --disable-dev-shm-use " menghentikan kesalahan. Saya akan melihat ke dalam masalah ini untuk mencari info lebih lanjut tentang efeknya, dan pertanyaan lain seperti apa yang memicu google-chrome untuk memperbarui.

ChromeOptions options = new ChromeOptions();
        ...
        options.addArguments("--no-sandbox");
        options.addArguments("--disable-dev-shm-usage");
Pete Kelley
sumber
Saya ingin mengklarifikasi bahwa kode ini berjalan setiap hari kerja pada kotak Ubuntu Linux, tetapi kode yang setara pada desktop Windows berjalan baik bahkan pada hari Senin. Saya tidak menemukan info tentang apa fungsi dari file DevToolsActivePort untuk dan itu akan berguna juga. PK
Pete Kelley
1
Opsi ini menghentikan kesalahan untuk saya juga. pd: menggunakan tumpukan Rails.
Mario Pérez
Saya masih mendapatkan [java] [1536892035.965][SEVERE]: Timed out receiving message from renderer: 60.000kesalahan bahkan dengan ini
Jonathan
@Jonathan - Hai! dapatkah Anda memberikan lebih banyak detail, seperti OS mana, versi komponen mana yang Anda gunakan, atau bagaimana Anda menjalankan proses?
Pete Kelley
@Toby: Hai! Saya tidak bermaksud mengatakan bahwa posisi itu membuat perbedaan, hanya penggunaan minimal dari parameter tersebut. Tampaknya beberapa nilai default yang saya andalkan berubah ketika peningkatan terjadi. Setiap detail lain mengenai sistem atau pesan yang Anda berikan dapat membantu.
Pete Kelley
35

Kami mengalami masalah yang sama pada budak jenkins kami (mesin linux) dan mencoba semua opsi di atas.

Satu-satunya hal yang membantu adalah mengatur argumen

chrome_options.add_argument('--headless')

Tetapi ketika kami menyelidiki lebih lanjut, perhatikan bahwa layar XVFB tidak memulai properti dan itulah yang menyebabkan kesalahan ini. Setelah kami memperbaiki layar XVFB, itu menyelesaikan masalah.

Sreejith Edayillam
sumber
2
ini memecahkan masalah saya, ketika berjalan menggunakan C # (dalam hal ini opsi tampak seperti ini: options.AddArgument ("- headless");
ozz
XVFB adalah masalah bagi saya
lucaswxp
23

Saya memiliki masalah yang sama dengan python. Di atas membantu. Inilah yang saya gunakan dalam 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)
Vinodh Periyasamy
sumber
Saya memecahkan masalah saya dengan meng-upgrade chrome (saya sudah punya chromedrive terbaru), maka saya harus meng-upgrade browser yang biasa juga.
axel_ande
19

Memperbarui:

Saya dapat mengatasi masalah ini dan sekarang saya dapat mengakses chrome dengan url yang diinginkan.

Hasil dari mencoba solusi yang disediakan:

Saya mencoba semua pengaturan seperti yang disediakan di atas tetapi saya tidak dapat menyelesaikan masalah

Penjelasan tentang masalah ini:

Sesuai pengamatan saya file DevToolsActivePort tidak ada disebabkan ketika chrome tidak dapat menemukan referensi di folder scoped_dirXXXXX.

Langkah-langkah yang diambil untuk mengatasi masalah tersebut

  1. Saya telah membunuh semua proses chrome dan proses driver chrome.
  2. Menambahkan kode di bawah ini untuk memanggil 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);
    

Menggunakan langkah-langkah di atas saya bisa menyelesaikan masalah.

Terima kasih atas jawaban anda

Kumar Sampath
sumber
3
Apakah Anda tahu apa yang memengaruhi useAutomationExtension? Ini menonaktifkan ekstensi untuk otomatisasi (screenshot / kontrol dll) bukan? Bukankah seharusnya kedatangan DevTools membuat perubahan ini tidak memiliki pengaruh? codereview.chromium.org/2785413002
Toby
11

Saya menghadapi masalah yang sama baru-baru ini dan setelah beberapa percobaan dan kesalahan itu berhasil juga bagi saya.

HARUS DI ATAS:

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);
    }

}

GoogleSearchPageTraditionalSeleniumTests.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>
Nital
sumber
Menarik! Bagaimana Anda menghasilkan file .side? Apakah ini sesuatu yang dilakukan orang QA secara manual?
Nital
Anda menggunakan Selenium IDE untuk merekam tes. Hasilnya adalah file .side. Ini berjalan baik menggunakan IDE, tapi saya mencoba menjalankannya menggunakan selenium-side-runner tetapi mengalami semua jenis masalah dengan chromedriver.
pabrams
harus menjadi pilihan pertama - menghabiskan waktu berhari - hari untuk menemukan ini haha
cuniculus
Terima kasih! Menambahkan "--no-sandbox" menyelesaikan masalah saya.
matabares
7

Dalam kasus saya di lingkungan berikut:

  • Windows 10
  • Python 3.7.5
  • Google Chrome versi 80 dan ChromeDriver yang sesuai di jalur C:\Windows
  • selenium 3.141.0

Saya perlu menambahkan argumen --no-sandboxdan --remote-debugging-port=9222ke ChromeOptionsobjek dan menjalankan kode sebagai pengguna administrator dengan makan siang Powershell / cmd sebagai administrator.

Ini adalah kode terkait:

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)
Soheil Pourbafrani
sumber
1
sama untuk saya dengan buruh pelabuhan dengan ubuntu 18.04, py3.7, chrome (driver) 80
patroqueeet
Ini bekerja untuk saya tanpa masalah lebih lanjut. Saya baru saja mulai mengalami masalah ini hari ini, tetapi karena jawaban Anda, masalah ini cepat teratasi! Lingkungan saya pada dasarnya sama dengan lingkungan Anda.
Ryan Harris
6

Saya mengalami masalah ini pada Ubuntu 20 dengan Python Selenium setelah pertama kali mengunduh chromedriver secara terpisah dan kemudian menggunakan sudo apt install chromium-browserMeskipun mereka adalah versi yang sama, hal ini terus terjadi.

Perbaikan saya adalah menggunakan driver chrome yang disediakan yang datang dengan paket repo yang terletak di

/snap/bin/chromium.chromedriver

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

Sebagaimana dinyatakan dalam jawaban lain ini :

Pesan kesalahan ini ... menyiratkan bahwa ChromeDriver tidak dapat memulai / menelurkan WebBrowser baru yaitu sesi Browser Chrome.

Di antara penyebab yang mungkin, saya ingin menyebutkan fakta bahwa, dalam kasus Anda menjalankan Chromium tanpa kepala melalui Xvfb, Anda mungkin perlu untuk exportyang DISPLAYvariabel: dalam kasus saya, saya punya di tempat (seperti yang direkomendasikan) yang --disable-dev-shm-usagedan --no-sandboxpilihan, semuanya berjalan dengan baik, tetapi dalam instalasi baru yang menjalankan Ubuntu 18.04 terbaru (saat penulisan) kesalahan ini mulai terjadi, dan satu-satunya perbaikan yang mungkin adalah dengan mengeksekusi export DISPLAY=":20"(setelah sebelumnya memulai Xvfb dengan Xvfb :20&).

Piercarlo Slavazza
sumber
OMG Terima kasih. Saya membuat beberapa perubahan pada kontainer kami dan saya tidak sengaja meninggalkan xvfb. Saya tidak akan pernah menemukan ini jika Anda tidak meninggalkan ini di sini :-).
Ryan Shillington
3

Saya juga menghadapi masalah ini saat berintegrasi dengan server jenkins, saya menggunakan pengguna root untuk pekerjaan jenkin, masalah ini diperbaiki ketika saya mengubah pengguna ke pengguna lain . Saya tidak yakin mengapa kesalahan ini terjadi untuk pengguna root.

  • Google Chrome Versi 71.0
  • ChromeDriver Versi 2.45
  • Versi CentOS7 1.153
Osanda Deshan
sumber
Pengguna non-root bekerja untuk saya, saya memiliki versi driver chrome yang benar untuk chromium.
TicJit
2

Dalam kasus saya, itu terjadi ketika saya mencoba menggunakan profil pengguna default saya:

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

Ini memicu chrome untuk menggunakan kembali proses yang sudah berjalan di latar belakang, sedemikian rupa, proses yang dimulai oleh chromedriver.exe berakhir begitu saja.

Resolusi: matikan semua proses chrome.exe yang berjalan di latar belakang.

radzimir
sumber
Saya memiliki masalah serupa, tetapi di linux - proses chrome saya tidak keluar dengan benar setelah skrip macet, dan mereka digunakan kembali secara tidak benar. membunuh mereka memecahkan masalah
jeremycg
2

perbarui kemampuan di conf.js as

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']
    }
  },

};
pengguna2694064
sumber
2

Dalam kasus saya, saya mencoba membuat jar runnable pada OS Windows dengan browser chrome dan ingin menjalankan yang sama pada mode headless di kotak unix dengan CentOs di atasnya. Dan saya mengarahkan biner saya ke driver yang telah saya unduh dan paket dengan suite saya. Bagi saya, masalah ini terus terjadi terlepas dari penambahan di bawah ini:

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);

Solusi yang saya coba dan bekerja untuk saya adalah, unduh chrome dan alat-alatnya di kotak host VM / Unix, instal dan arahkan biner ke ini di suite otomatisasi dan bingo! Berhasil :)

Perintah unduhan:

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

Instal perintah:

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

Perbarui suite dengan jalur biner google-chrome di bawah ini:

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

Dan .. itu berhasil!

parvez basha
sumber
Di mana kita menambahkan kode ini? Saya tidak melihat kode C # dalam file .side saya
pabrams
1

Saya memiliki masalah yang sama, tetapi dalam kasus saya chrome sebelumnya dipasang di folder temp pengguna, setelah itu diinstal ulang ke file Program. Jadi solusi apa pun yang disediakan di sini tidak membantu saya. Tetapi jika memberikan path ke chrome.exe semua berfungsi:

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

Saya harap ini membantu seseorang =)

Sergiy Konoplyaniy
sumber
tampaknya kebalikan dari perbaikan @shiuu di bawah ini
Toby
1

Tidak ada solusi yang berfungsi untuk saya. Tapi di sini ada solusinya:

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.")
Alex
sumber
1

Anda bisa mendapatkan kesalahan ini hanya karena menyampaikan argumen buruk ke Chrome. Sebagai contoh, jika saya meneruskan "headless"sebagai argumen ke C # ChromeDriver, itu bagus sekali. Jika saya membuat kesalahan dan menggunakan sintaks yang salah "--headless",, saya mendapatkan DevToolsActivePort file doesn't existkesalahan.

Chris Moschini
sumber
1

Saya mengalami masalah yang sama, saya menggunakan browser UBUNTU, PYTHON dan OPERA . dalam kasus saya masalahnya berasal karena saya punya versi operadriver yang ketinggalan zaman.

Solusi: 1. Pastikan Anda menginstal versi browser opera terbaru (jangan gunakan opera beta atau pengembang opera), untuk itu buka situs opera resmi dan unduh dari sana versi opera_stable terbaru.

  1. Instal driver opera terbaru (jika Anda sudah menginstal driver opera, Anda harus menghapusnya terlebih dahulu menggunakan sudo rm ...)

wget https://github.com/operasoftware/operachromiumdriver/releases/download/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

dalam kasus saya terbaru adalah 80.0.3987 seperti yang Anda lihat

  1. Selain itu saya juga menginstal chromedriver (tetapi karena saya melakukannya sebelum pengujian, saya tidak tahu ini diperlukan) untuk menginstal chromedriver, ikuti langkah-langkah pada langkah sebelumnya: v

  2. Nikmati dan terima kasih!

Contoh kode selenium

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()
Adrian Jimenez
sumber
0

Tampaknya ada banyak kemungkinan penyebab kesalahan ini. Dalam kasus kami, kesalahan terjadi karena kami memiliki dua baris kode berikut:

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

Itu dipecahkan dengan menghapus baris kedua.

shiuu
sumber
tampaknya kebalikan dari perbaikan @ sergiy-konoplyaniy di atas: '(
Toby
Di setBinary kami, kami mencoba mengatur driver chrome, yang tampaknya merupakan kesalahan. @ perbaiki set sergiy-konoplyaniy's chrome.exe melalui setBinary.
shiuu
Di mana Anda memiliki kode ini? Yang saya miliki hanyalah file .side, dan tidak ada kode C # di dalamnya.
pabrams
0

Saya mengalami masalah yang sama menjalankan Chrome melalui Behat / Mink dan Selenium dalam wadah Docker. Setelah beberapa mengutak-atik, saya tiba di berikut behat.ymlyang memasok switch yang disebutkan di atas. Perhatikan bahwa semua itu diperlukan agar saya berhasil menjalankannya.

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"
Chris
sumber
0

Dalam kasus saya, saya berada di lingkungan Kubernetes di mana saya tidak dapat menggunakan TMPDIR default karena itu akan mengisi direktori temp dengan sampah.

Jadi saya menggunakan ini untuk menggunakan tmpdir yang berbeda:

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

Tapi sekarang setelah saya memutakhirkan semuanya ke yang terbaru, ini sepertinya tidak lagi berfungsi. Saya perlu menemukan cara baru untuk melakukan ini.

Nicholas DiPiazza
sumber
0

Ini terjadi ketika chromedriver gagal mengetahui apa yang digunakan port debugging chrome.

Salah satu penyebab yang mungkin adalah cacat terbuka dengan HKEY_CURRENT_USER \ Software \ Policies \ Google \ Chrome \ UserDataDir

Tetapi dalam kasus terakhir saya, itu adalah penyebab lain yang tidak dikenal.

Untungnya pengaturan nomor port bekerja secara manual:

final String[] args = { "--remote-debugging-port=9222" };
options.addArguments(args);
WebDriver driver = new ChromeDriver(options);
radzimir
sumber
2
Apakah ini port konstan? Atau di mana saya bisa mencarinya?
Mike Shiyan
0

Nomor port yang salah dalam kasus saya. Periksa apakah nomor port ketika memulai server Selenium sama dengan di skrip Anda.

Jaroslav Štreit
sumber
-2

Saya memecahkan masalah ini dengan menginstal yum -y install gtk3-devel gtk3-devel-docs", itu berfungsi ok

Pekerjaan saya adalah:

Selenium Version 3.12.0
ChromeDriver Version v2.40
Chrome 68 level

Sebelum:
masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Setelah:
masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

何贤勇
sumber
10
Dari Ulasan: Tolong jangan memposting teks dalam gambar. Sunting jawaban Anda dan ganti gambar-gambar itu dengan teks. Terima kasih
sɐunıɔ ןɐ qɐp
1
Apakah ini memecahkan masalah bagi siapa pun? Ini tidak menyelesaikan masalah bagi saya
Bendram
-2

Karena ini adalah pesan paling aktif untuk jenis kesalahan ini, saya ingin menyebutkan solusi saya (setelah menghabiskan waktu berjam-jam untuk memperbaikinya).

Di Ubuntu 18.04, menggunakan Chrome 70 dan Chromedriver 2.44, dan Python3 saya terus mendapatkan kesalahan DevToolsActivePort yang sama, bahkan ketika saya menonaktifkan semua opsi yang tercantum di atas. File log chromedriver dan ps menunjukkan bahwa chromedriver yang saya atur di chrome_options.binary_location sedang berjalan, tetapi selalu memberikan kesalahan DevToolsActivePort. Ketika saya menghapus chrome_options.binary_location = '....' dan menambahkannya ke pembuatan webdriver, saya membuatnya berfungsi dengan baik. webdriver.Chrome ('/ path to ... / chromedriver', chrome_options = chrome_options)

Terima kasih semuanya atas komentar Anda yang membuat saya mengerti dan menyelesaikan masalah ini.

Obrc
sumber