teratail header banner
teratail header banner
質問するログイン新規登録

質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

1回答

463閲覧

VS codeにコピペするとSyntaxError: invalid syntaxとなってしまう

DDDlucky

総合スコア3

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2023/11/08 00:36

0

0

実現したいこと

Chat GPTに提案してもらったコードをVS Codeにコピペして実行するのですが
以下のエラーメッセージとなってしまい、正常に実行できません。

Chat GPTに聞いても正しいコードだというので解決しません。

どの部分に問題があるのかご教示いただけますと幸いです。

発生している問題・エラーメッセージ

ile "mail_de_point.py", line 15 def Operation(url, user_name, user_passwd): ^ SyntaxError: invalid syntax

該当のソースコード

python

1from selenium import webdriver 2from selenium.webdriver.chrome.options import Options 3from selenium.webdriver.common.by import By 4from selenium.webdriver.support.ui import WebDriverWait 5from selenium.webdriver.support import expected_conditions as EC 6import chromedriver_binary 7import time 8 9user_name = '' 10user_passwd = '' 11 12def wait_for_element(driver, by, value, timeout=10): 13 return WebDriverWait(driver, timeout).until(EC.presence_of_element_located((by, value)) 14 15def Operation(url, user_name, user_passwd): 16 op = Options() 17 op.add_argument("--no-sandbox") 18 op.add_argument('--disable-dev-shm-usage') 19 op.add_argument('--disable-gpu') 20 driver = webdriver.Chrome(options=op) 21 22 driver.get(url) 23 24 # ユーザー名の入力フィールドが表示されるのを待つ 25 elem_user = wait_for_element(driver, By.ID, "user_id") 26 27 if elem_user: 28 elem_user.send_keys(user_name) 29 30 # パスワードの入力 31 elem_password = wait_for_element(driver, By.ID, "loginInner_p") 32 if elem_password: 33 elem_password.send_keys(user_passwd) 34 35 driver.find_element_by_class_name('loginButton').click() 36 37 driver.implicitly_wait(100) 38 driver.find_element_by_class_name('notRead').click() 39 driver.implicitly_wait(20) 40 41 add = 0 42 while len(driver.find_elements_by_xpath('//div[@class="listCont"]/a')) > add: 43 if driver.find_elements_by_xpath('//div[@class="listCont"]/a')[add].get_attribute('target') == '': 44 try: 45 driver.implicitly_wait(20) 46 driver.find_elements_by_xpath('//div[@class="listCont"]/a')[add].click() 47 except: 48 driver.implicitly_wait(20) 49 driver.find_elements_by_xpath('//div[@class="listCont"]/a')[add].click() 50 driver.implicitly_wait(20) 51 try: 52 driver.implicitly_wait(20) 53 driver.find_element_by_class_name('point_url').click() 54 except: 55 try: 56 driver.implicitly_wait(20) 57 driver.find_element_by_id('mailFrame').click() 58 except: 59 pass 60 time.sleep(5) 61 try: 62 driver.switch_to.window(driver.window_handles[1]) 63 driver.close() 64 driver.switch_to.window(driver.window_handles[0]) 65 time.sleep(5) 66 except: 67 pass 68 driver.back() 69 time.sleep(5) 70 else: 71 add += 1 72 73 print('finish!') 74 driver.quit() 75 76def main(): 77 Operation('https://) 78 79if __name__ == '__main__': 80 main() 81

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2023/11/08 00:42

13行目の末尾に閉じ括弧が足りません。 return WebDriverWait(driver, timeout).until(EC.presence_of_element_located((by, value))
guest

回答1

0

閉じ括弧)と、Operation関数呼び出し時の閉じ単一引用符'が抜けています。

python

1from selenium import webdriver 2from selenium.webdriver.chrome.options import Options 3from selenium.webdriver.common.by import By 4from selenium.webdriver.support.ui import WebDriverWait 5from selenium.webdriver.support import expected_conditions as EC 6import chromedriver_binary 7import time 8 9user_name = '' 10user_passwd = '' 11 12def wait_for_element(driver, by, value, timeout=10): 13 return WebDriverWait(driver, timeout).until(EC.presence_of_element_located((by, value))) # 修正 14 15def Operation(url, user_name, user_passwd): 16 op = Options() 17 op.add_argument("--no-sandbox") 18 op.add_argument('--disable-dev-shm-usage') 19 op.add_argument('--disable-gpu') 20 driver = webdriver.Chrome(options=op) 21 22 driver.get(url) 23 24 # ユーザー名の入力フィールドが表示されるのを待つ 25 elem_user = wait_for_element(driver, By.ID, "user_id") 26 27 if elem_user: 28 elem_user.send_keys(user_name) 29 30 # パスワードの入力 31 elem_password = wait_for_element(driver, By.ID, "loginInner_p") 32 if elem_password: 33 elem_password.send_keys(user_passwd) 34 35 driver.find_element_by_class_name('loginButton').click() 36 37 driver.implicitly_wait(100) 38 driver.find_element_by_class_name('notRead').click() 39 driver.implicitly_wait(20) 40 41 add = 0 42 while len(driver.find_elements_by_xpath('//div[@class="listCont"]/a')) > add: 43 if driver.find_elements_by_xpath('//div[@class="listCont"]/a')[add].get_attribute('target') == '': 44 try: 45 driver.implicitly_wait(20) 46 driver.find_elements_by_xpath('//div[@class="listCont"]/a')[add].click() 47 except: 48 driver.implicitly_wait(20) 49 driver.find_elements_by_xpath('//div[@class="listCont"]/a')[add].click() 50 driver.implicitly_wait(20) 51 try: 52 driver.implicitly_wait(20) 53 driver.find_element_by_class_name('point_url').click() 54 except: 55 try: 56 driver.implicitly_wait(20) 57 driver.find_element_by_id('mailFrame').click() 58 except: 59 pass 60 time.sleep(5) 61 try: 62 driver.switch_to.window(driver.window_handles[1]) 63 driver.close() 64 driver.switch_to.window(driver.window_handles[0]) 65 time.sleep(5) 66 except: 67 pass 68 driver.back() 69 time.sleep(5) 70 else: 71 add += 1 72 73 print('finish!') 74 driver.quit() 75 76def main(): 77 Operation('https://') # 修正 78 79if __name__ == '__main__': 80 main()

とすればそのエラーは防げます!

投稿2023/11/08 12:34

nakasyou

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問