

コードが思ったとおりに動作せず困っております。  
どう直せばよいかご教示頂ければ助かります。

### 環境

Python 2.7  
Windows 7

### コードの目的

Gmailのメール作成画面に予め保存しておいたgazou1.pngおよびgazou2.pngを貼り付けする  
※以下のコードのfilepath2に保存してあります

### 手法

画像をペイントで画像を開き、pyautoguiにてコピー→貼り付け→Gmail本文に貼り付け→Ctrl+Zで元の画像の大きさに戻しています。

### 現象

1つ目の画像を貼り付けに失敗することが多々ある。  
というか、タスクスケジューラから自動起動させるとほぼ失敗。（成功率20%ぐらい）  
手動でpyファイルを実行するとほぼ成功する。

### 失敗しているときの動作状況

gazou1をペイントで開き、Ctrl+Aで全選択は必ず成功  
その後のCtrl+Cがペイント画面で働いていない様子。  
本文にフォーカスを移し、 **貼り付けをする際に、直近にコピーしていた文字列が  
メール本文に貼り付け→Crtl+Zでその操作を取り消し**  
という現象がおきております。  
ちなみに、2つ目の画像の貼り付けは必ず成功しています。

### コード

[code]

    filepath2 = u"C:\photo\"
    
    app = "C:\Windows\System32\mspaint.exe"
    file = filepath2 + u"gazou1.png"
    pro = subprocess.Popen([app, file])
    time.sleep(3)
    
    pyautogui.hotkey('ctrl', 'a')
    pyautogui.hotkey('ctrl', 'c')
    
    elements = driver.find_element_by_xpath(u"//*[@class='Am Al editable LW-avf']")
    elements.send_keys(Keys.ENTER)
    ActionChains(driver).key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform()
    time.sleep(16)
    ActionChains(driver).key_down(Keys.CONTROL).send_keys('z').key_up(Keys.CONTROL).perform()
    time.sleep(4)
    pro.kill()
    time.sleep(3)
    
    app = "C:\Windows\System32\mspaint.exe"
    file = filepath2 + u"gazou2.png"
    pro = subprocess.Popen([app, file])
    time.sleep(3)
    
    pyautogui.hotkey('ctrl', 'a')
    pyautogui.hotkey('ctrl', 'c')
    
    elements = driver.find_element_by_xpath(u"//*[@class='Am Al editable LW-avf']")
    elements.send_keys(Keys.ENTER)
    ActionChains(driver).key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform()
    time.sleep(16)
    ActionChains(driver).key_down(Keys.CONTROL).send_keys('z').key_up(Keys.CONTROL).perform()
    time.sleep(4)
    pro.kill()
    time.sleep(3)
    
[/code]


CC BY-SA 4.0
2017-06-05T08:47:35.767
35302
2022-08-10T06:20:17.303
2022-08-10T06:20:17.303
3060
23583
question
python windows python2 pyautogui
Python2.7にてPyautoguiが思ったとおりの動作を行いません


根本の原因かどうかはわかりませんが、バックスラッシュ`\`を文字列内で使うとエスケープされるので、1行目の2つ目の`"`はエスケープされて文字列を閉じれていない状況だと思います。StackOverflowのシンタックスハイライトがおかしいのもそのせいです。  
Pythonでパスを指定する場合Windowsであっても大概フォーワードスラッシュ`/`が使えるので、とりあえず

[code]

    filepath2 = u"C:/photo/"
    app = "C:/Windows/System32/mspaint.exe"
    
[/code]

としてみてはいかがでしょうか。

というか20%の確率で動いたほうが謎のような気が…


CC BY-SA 3.0
2017-06-05T13:51:04.543
35311
2017-06-05T13:51:04.543
3974
35302
answer


頂いた回答を元に実行いたしました。  
残念ながら、同様の症状が発生し成功したりしなかったりとなってしまいました。

そこで、こちらの考え方を元に以下のように変更したところ安定して動き始めました。

■変更部分  
filepath2 = u"C:\\\photo\\\"  
※バックスラッシュを2回連続で記載に変更

ご確認頂いた皆様、ありがとうございました。


CC BY-SA 3.0
2017-06-07T00:34:57.820
35353
2017-06-07T00:34:57.820
23583
35302
answer