89698


Pythonでselenium+Chromeを利用した際にYahooページを開き、ショッピングのメニューをクリックすると自動的にchromeが落ちてしまいます。  
Yahooページだけではなく他のサイトを開く際も同じです。

以前は `drive.close()` を指定するとChromeが閉じました。

PythonのバージョンやSeleniumによってChromeは自動的に落ちますか。  
自動的に落ちない方法はありますでしょうか。

もし分かる方がいましたら、教えていただけますか。

下記のコードを実行すると `DeprecationWarning` と表示されます。  
何か関係していますか。

Chrome と ChromeDriverのバージョンは共に103.0.5060です。

ChromeDriverのバージョン

[code]

    Starting ChromeDriver 103.0.5060.53 (a1711811edd74ff1cf2150f36ffa3b0dae40b17f-refs/branch-heads/5060@{#853}) 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.
    
[/code]

Python バージョン

[code]

    python -V
    
    Python 3.10.5
    
[/code]

pipのバージョン

[code]

    pip list
    
    Package            Version
    ------------------ ---------
    schedule           1.1.0
    selenium           4.3.0
    webdriver-manager  3.7.1
    
[/code]

[code]

    # Excel用ライブラリ読込
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.chrome.options import Options
    from webdriver_manager.chrome import ChromeDriverManager
    import time 
    
    #オプション
    option = Options()
    
    #Getting Default Adapter failed error message
    option.add_experimental_option('excludeSwitches', ['enable-logging'])
    
    #ログイン情報を維持するための設定　
    # 参考→https://rabbitfoot.xyz/selenium-chrome-profile
    PROFILE_PATH ="C:\\Users\\python\\AppData\\Local\\Google\\Chrome\\User Data\\" # 変更
    option.add_argument('--user-data-dir=' + PROFILE_PATH)
    option.add_argument('--profile-=Default')
    
    # ブラウザを開く。 #options=option background
    driver = webdriver.Chrome(executable_path=ChromeDriverManager().install() ,options=option)
    
    #Yahoo
    URL= "https://www.yahoo.co.jp/"
    
    time.sleep(2)
    #YahooのURLを開く。
    driver.get(URL)
    
    time.sleep(2)
    #メニュ欄のショッピングをクリック
    driver.find_element("xpath", '//*[@id="ToolList"]/ul/li[1]/div/a/p/span[1]/span').click()
    
[/code]

実行結果

[code]

    [WDM] - ====== WebDriver manager ======
    [WDM] - Current google-chrome version is 103.0.5060
    [WDM] - Get LATEST chromedriver version for 103.0.5060 google-chrome
    [WDM] - Driver [C:\Users\python\.wdm\drivers\chromedriver\win32\103.0.5060.53\chromedriver.exe] found in cache
    c:\Users\python\Documents\test.py:17: DeprecationWarning: executable_path has been deprecated, please pass in a Service object
      driver = webdriver.Chrome(executable_path=ChromeDriverManager().install() ,options=option)
    
    DevTools listening on ws://127.0.0.1:59679/devtools/browser/f9aa4f79-b4ec-42f3-95e6-fa38f6301a81
    [8360:8428:0630/151741.437:ERROR:device_event_log_impl.cc(214)] [15:17:41.437] Bluetooth: bluetooth_adapter_winrt.cc:1074 Getting Default Adapter failed.
    
[/code]

お手数ですが、宜しくお願い致します。


CC BY-SA 4.0
2022-06-30T12:52:33.687
89691
2022-07-01T02:40:18.737
2022-07-01T02:09:32.147
3060
18859
question
python python3 selenium
PythonでSeleniumを使ってChromeを自動的に落ちさせない方法


こちらの記事と同様の処理を行いたい場合、この記事の回答が参考になるでしょう。  
[Python selenium keep browser
open](https://stackoverflow.com/q/51865300/9014308)

> I just want that selenium keeps all browser windows open, until I close them
> manually.  
>  手動で閉じるまで、seleniumがすべてのブラウザウィンドウを開いたままにしておく必要があります。

回答：

> If you want chrome and chromedriver to stay open, you have to use the
> 'detach' option when starting chromedriver.  
>
> chromeとchromedriverを開いたままにしておきたい場合は、chromedriverを起動するときに「デタッチ」オプションを使用する必要があります。
[code]

>     from selenium.webdriver.chrome.options import Options
>     chrome_options = Options()
>     chrome_options.add_experimental_option("detach", True)
>  
[/code]

質問のソースコードの場合は、`option.add_experimental_option('excludeSwitches', ['enable-
logging'])`の直後に以下の行を加えれば良いでしょう。

[code]

    option.add_experimental_option('detach', True)
    
[/code]

類似することがこちらの記事にも書かれていますので参考に。  
最初のteratailの記事は他の方法も色々書かれています。  
[Python
Seleniumで処理後コンソールを消してそのままChromeを使用し続ける方法](https://teratail.com/questions/253512)  
[Selenium実行後もChromeを開いたままにする](https://rseiub.com/74)

ただしバックグラウンドプロセスに大量のchromedriver.exeが発生していたこともあるらしいので、その場合はこちらの記事の応用で、シグナルでプロセスを終了させる方が良いらしいですね。  
[Selenium実行後にchromedriver.exeのプロセスが残らないようにする](https://rseiub.com/75)  
[【Python】Seleniumでブラウザを開いたまま処理を終了する](https://qiita.com/shobota/items/5324ca810b3848c4fd0f)


CC BY-SA 4.0
2022-07-01T02:40:18.737
89698
2022-07-01T02:40:18.737
26370
89691
answer