ViIlage
@ViIlage

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

相対パスがうまく使えません。

解決したいこと

PythonでEdgeブラウザを操作するアプリを作っています。seleniumでEdgeのウェブドライバーを使ってブラウザを操作したいのですが、ドライバーのパスを指定する際に絶対パスで指定するとうまく動作するのですが、相対パスで指定した場合パスが間違ってしまっている様でうまく動作しません。(相対パスにしたい理由としてはpyinstallでアプリ化してほかの人も使えるようにしたいからです。)

おそらく初歩的な見落としや勘違いがあると思うのですが自分では見つけられません。
どうかお力をお貸しください。

絶対パスの場合うまくいく

webdriver_path = r"C:/system/webdriver/Edge/Version_114.0.1823.41/msedgedriver.exe"
if os.path.exists(webdriver_path):
    print('ドライバーが存在します。')
else:
    print('ドライバーが存在しません。')

#結果:ドライバーが存在します。

相対パスの場合うまくいかない

webdriver_path = r"webdriver/Edge/Version_114.0.1823.41/msedgedriver.exe"
if os.path.exists(webdriver_path):
    print('ドライバーが存在します。')
else:
    print('ドライバーが存在しません。')

#結果:ドライバーが存在しません。

補足

webdriver_managerを使うやり方はpyinstallでアプリ化したものが他のPCでエラーになってしまうため避けています。

試したこと

import os

# カレントディレクトリのパスを取得
current_directory = os.getcwd()

# ドライバーファイルの相対パス
webdriver_relative_path = "webdriver/Edge/Version_114.0.1823.41/msedgedriver.exe"

# ドライバーファイルの絶対パスを作成
webdriver_path = os.path.join(current_directory, webdriver_relative_path)

if os.path.exists(webdriver_path):
    print('ドライバーが存在します。')
else:
    print('ドライバーが存在しません。')
0

1Answer

closeですが、未回答なので一言

msedgedriver.exeはhttpサーバとして実行できれば良いので、os.path.existsで確認することなく、

driver = webdriver.Edge(executable_path='msedgedriver.exe')

パスが通っていればよいので、最悪の場合はpythonと同じ場所にmsedgedriver.exeを配置してください。または

c:¥windows¥sysyem32¥drivers¥msedgedriver.exe

1Like

Your answer might help someone💌