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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

selenium

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

Q&A

解決済

2回答

956閲覧

try文とその他の処理について

help-man

総合スコア58

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

selenium

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

0グッド

0クリップ

投稿2021/10/01 07:38

python(selenium)のtry文で『この要素がなかったら17時にシャットダウンをする、要素があればクリックをしてクリックをすると新しいタブが開くから新しいタブに切り替えて17時にシャットダウンをする』というコードを書きたいのですが上手くいきません
どこが間違っておりますでしょうか?
何卒ご教授よろしくお願いいたします

python

1try: 2 driver.find_element_by_xpath('//*[@id="root"]/div/div/div[5]/div[2]/div[4]/div[5]/div/div[1]/table/tbody/tr[2]/td[2]/div/div[1]').click() 3except NoSuchElementException: 4 def shutdown(): 5 os.system('shutdown -s') 6 7 schedule.every().monday.at("17:00").do(shutdown) 8 schedule.every().tuesday.at("17:00").do(shutdown) 9 schedule.every().wednesday.at("17:00").do(shutdown) 10 schedule.every().thursday.at("17:00").do(shutdown) 11 schedule.every().friday.at("17:00").do(shutdown) 12 13 while True: 14 schedule.run_pending() 15 time.sleep(60) 16 break 17else: 18 driver.switch_to.window(driver.window_handles[1]) 19 20 21 def shutdown(): 22 os.system('shutdown -s') 23 24 schedule.every().monday.at("17:00").do(shutdown) 25 schedule.every().tuesday.at("17:00").do(shutdown) 26 schedule.every().wednesday.at("17:00").do(shutdown) 27 schedule.every().thursday.at("17:00").do(shutdown) 28 schedule.every().friday.at("17:00").do(shutdown) 29 30 while True: 31 schedule.run_pending() 32 time.sleep(60) 33 break 34

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

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

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

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

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

guest

回答2

0

ベストアンサー

try``exceptは他にに方法がない時に使います。

この要素がなかったら~~、要素があれば~~

であれば、普通は、

Python

1elements = driver.find_elements_by_xpath("~~~") 2if len(elements)>0: 3 elements[0].click() 4 driver.switch_to.window(driver.window_handles[1]) 5 6シャットダウンの処理

シャットダウンの部分はインデントがおかしいので、インデントだけ直すと、

Python

1def shutdown(): 2 os.system('shutdown -s') 3 4schedule.every().monday.at("17:00").do(shutdown) 5schedule.every().tuesday.at("17:00").do(shutdown) 6schedule.every().wednesday.at("17:00").do(shutdown) 7schedule.every().thursday.at("17:00").do(shutdown) 8schedule.every().friday.at("17:00").do(shutdown) 9 10while True: 11 schedule.run_pending() 12 time.sleep(60)

でしょうが、シャットダウンしてしまえばそれ以降の処理は動かないので、everyにしてwhileでループする意味ないのでは?また、なぜ曜日指定?

投稿2021/10/01 11:13

otn

総合スコア84806

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

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

help-man

2021/10/01 12:32

やはりwhile文は必要ないですよね? ネットに転がってたのを適当にコピペしてみてみただけなので「これ必要かな?」と私も思っていました 曜日指定にしたので平日のみ使いたかったからです これもネットで『python pc シャットダウン 方法』で調べてみたら「scheduleを使うといい」と書いてあったのでscheduleを使いました
otn

2021/10/01 13:16 編集

意味をわからずにコードを書いていると、エラーになったり、意図通り動かないのは当然です。 意味をわかった上でコードを書きましょう。 「平日であれば17にシャットダウンし、平日でなければ何もしない」ということであれば、その通りにストレートに書いた方がいいです。
help-man

2021/10/01 13:26 編集

分かりました 毎回勉強不足で申し訳ございません
otn

2021/10/01 13:35

謝る話ではないでしょう。
help-man

2021/10/01 14:18

ご指示のとおりにやってみたらできました ありがとうございます! ただシャットダウンに関しては 『while True: schedule.run_pending() time.sleep(60)』 がないとシャットダウンはできないようです なぜかは分かりませんが
help-man

2021/10/01 14:20

ターミナルの最後に『Passthrough is not supported, GL is disabled, ANGLE is 』と表示されますが関係ありませんよね?
otn

2021/10/01 14:51

失礼しました。run_pending()は該当がないとすぐ終了するようなので、やはりwhileは必要でした。訂正します。
help-man

2021/10/01 14:55

そうなんですか 訂正ありがとうございます
guest

0

とりあえず、defの中に その関数の呼び出しが入ってしまっているので、except側に入ってもelse側に入っても何かが動作するようにはなっていません。

schedule.every 以下のインデントは間違えているでしょう。

投稿2021/10/01 10:28

TakaiY

総合スコア12832

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

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

help-man

2021/10/01 12:34

勉強不足で大変恐縮なのですがschedule.every 以下のインデントとはwhileのところでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問