

### **概要**

SikulixにバンドルされているRobot Frameworkをつかっています。

テストケース(.robot)内にスクリーンショットを取得するキーワード(Take Screenshot)を記述すれば

Log.html内にテスト結果とともに  
画面イメージが埋め込まれるはずなのですが、  
埋め込まれずに困っています。

同様の事象は関連サイトにもあり、対処方法も実施しているのですが  
デバッグコードを入れたところ、原因が異なっているようで  
どうすれば埋め込まれるようになるのか困っているところです。

原因、対処についてご存じの方がいらっしゃいましたら、ご教示ください。

### **環境**

  * Windows7 Enterprise 64bit
  * SikuliX 1.1.4
  * Robot Framework(SikuliX 1.1.4にバンドルされているもの)
  * Python 2.7.1(SikuriX 1.1.4にバンドルされているもの）
  * SikulixIDE 1.1.4

### **やったこと**

  * ソースコード

**Robot_Run_01.sikuli/sample.robot** （robotのスクリプト）  
```RobotFramework

[code]

    *** Variables ***
    
    *** Settings ***
    Library  OperatingSystem
    Library  TestLib.sikuli/TestLib.py
    Library  Screenshot  ${OUTPUT DIR}   width=640px
    
    *** Test Cases ***
    テストケース1
    スクリーンショットを撮る ${TEST NAME}_Before
    電卓を表示する
    スクリーンショットを撮る ${TEST NAME}_After
    
    
    
    *** Keywords ***
    電卓を表示する
    open_calc
    
    スクリーンショットを撮る ${NAME}
    Take Screenshot   ${NAME}
    
[/code]

**TestLib.sikuli/Testlib.py** （計算機の起動を待つ、簡単なSikuliスクリプト）

[code]

    # coding: utf-8
    from sikuli import *
    # from __future__ import with_statement
    
    class TestLib(object):
        def open_calc(self):
            self.calc = App.open("calc")
            wait("1536568964767.png",1)
    
    ```
    
[/code]

**Robot_Run_01.sikuli/Robot_Run_01.py** （Robotを起動するスクリプト。SikulixIDEから実行）

[code]

    from threading import currentThread
    
    prepareRobot()
    workdir = getBundleFolder()
    
    testdata = "sample.robot"
    
    datasource = os.path.join(workdir,testdata)
    
    # Log.htmlに画像が埋め込まれない現象の対処のため
    # 下記サイトを参考にThead名を明示的に指定➡解消せず
    # https://groups.google.com/forum/#!topic/rfw-users-jp/Z3YaEGgz3Wk
    # https://answers.launchpad.net/sikuli/+question/294598
    currentThread().name = 'MainThread'
    
    robot.run(datasource,outputdir=workdir)
    
[/code]

  * 実行結果  
(** SikulixIDE **)  
[![!\[イメージ説明\]\(d6211972ecf64a3c94f4a05c10607d6a.png\)](https://i.stack.imgur.com/khyj1.png)](https://i.stack.imgur.com/khyj1.png)  
(**Log.html**) 画像が埋め込まれるはずが、埋め込まれない  
[![!\[!\[**Log.html**\]\(e78e00646666f7bad250fb62b6d2f6c4.png\)](https://i.stack.imgur.com/xsrco.png)](https://i.stack.imgur.com/xsrco.png)

### **ためしたこと**

  * **Thread名を明示的に指定した**  
[ここ](https://groups.google.com/forum/#!topic/rfw-users-
jp/Z3YaEGgz3Wk)と[ここ](https://answers.launchpad.net/sikuli/+question/294598)を見て、Thread名が"Mainthead"または"RobotFrameworkTimeoutThread"以外だと  
logが呼ばれないということだったので、robot.run()をコールする前にThread名を明示的に指定したが改善されなかった。

  * **Debug用にコードを入れて状態を確認**  
改善されなかったため、念のためデバッグコードを入れ、Thread名を確認したが、期待通りMainthreadになっていた。

(** librarylogger.py **)  
[![!\[イメージ説明\]\(6aa5db9b211a8212c340662a3e31379e.png\)](https://i.stack.imgur.com/GAvcM.png)](https://i.stack.imgur.com/GAvcM.png)  
Output.xmlでは期待通り"MainThread"となっている(画像へのリンクは埋め込まれている・・)  
(** output.xml**)  
[![!\[イメージ説明\]\(176d86adcc2e2ab07a0aee16351f9e50.png\)](https://i.stack.imgur.com/iz49i.png)](https://i.stack.imgur.com/iz49i.png)


CC BY-SA 4.0
2018-09-15T03:21:18.337
48416
2018-09-15T13:21:11.860
30119
question
python rpa sikulix
SikuliX1.1.4に同梱のRobot FrameworkでLog.htmlにTake Screenshotのイメージが埋め込まれない


原因がわかったわけではありませんが、Sikurix1.1.4に同梱のRobot
Framework3.0を最新の3.0.4に置き換えることでやりたいことができるようになりました。

具体的には  
C:\Users\ユーザ名\AppData\Roaming\Sikulix\Lib\robot  
の中身をすべて入れかえたら問題が解消しました。


CC BY-SA 4.0
2018-09-15T13:21:11.860
48429
2018-09-15T13:21:11.860
30119
48416
answer