FALCO

ImageMagick なる外部ライブラリーがありこれを使おうかと色々調べたがあまりAndroid C#で利用している情報が見つからず結果断念。

https://github.com/MolotovCherry/Android-ImageMagick7

 

代わりに ImageSharp を利用することに

Visual Stuido の NuGet より、SixLabors.ImageSharp を選択して、Version 1.0.4 を指定してダウンロード

(最新だと、netstandard2.0  をサポートしていない?)

Package より netstandard2.0 フォルダーより以下のファイルをAssets/Plugins に保存

SixLabors.ImageSharp.dll
System.Numerics.Vectors.dll
System.Buffers.dll
System.Runtime.CompilerServices.Unsafe.dll
System.Memory.dll
System.Text.Encoding.CodePages.dll

あとは、Android でビルド

以下が画像を変換するコード(楽ちん)

  // 色々な画像をPNGに変換 
    public static byte[] ConvertToPNG(byte[] imageData)
    {
        using (var image = SixLabors.ImageSharp.Image.Load(imageData)) {
            using (var outputStream = new MemoryStream()) {
                image.Save(outputStream, new PngEncoder());
                return outputStream.ToArray();
            }
        }
    }

iOS でももちろん動作します。

mac 外付けHDDのファイルが 「macOSが使用しているため開けません。」となった時

ls -l  で調べると

-rwxr-xr-x@

謎の@マーク付き

"@" は拡張ファイル属性らしい、これを削除すれば問題ないよう
xattr コマンドで拡張属性を確認
xattr -d コマンドで属性を削除

xattr -c file で全部削除
xattr file
com.apple.FinderInfo
com.apple.lastuseddate#PS
com.apple.quarantine

xattr -d com.apple.FinderInfo com.apple.lastuseddate#PS com.apple.quarantine *

xattr -c *

 

Selenium IDE で配列を使うには?

基本的に、for each を使用すると配列にアクセス出来ますが、個別に index を指定してアクセスする時は、java script を使用します。

execute script|return ${colors}[${index}]|item

 

Java script から、store された変数にアクセスするには、${colors} を指定します。

さらに配列のインデックスを指定するには、 ${colors}[${index}] となります。

Running 'for each'
20:45:14
1.executeScript on return["red", "blue", "yellow"] with value colors OK
20:45:15
2.store on 0 with value index OK
20:45:15
3.forEach on colors with value color OK
20:45:15
4.executeScript on return ${colors}[${index}] with value item OK
20:45:15
echo: red
20:45:15
echo: red
20:45:15
7.executeScript on return +${index}+1 with value index OK
20:45:15
echo: blue
20:45:15
echo: blue
20:45:15
echo: yellow
20:45:16
echo: yellow
20:45:16
8.end OK
20:45:16
'for each' completed successfully

 

 

 

 

Selenium IDE でチェックボックス(CheckBox)の状態を確認するには?

verify checked id=xyz を使用します。or verify not checked

Selenium IDE 特定のページに文字列が存在しない事をチェックするには?

 

存在しないはずの文字列を指定します。今回は ”xpath”

//*[contains(*,’xpath’)]

Selenium IDE にて

store xpath count     //*[contains(*,’xpath’)]     count

xpath の結果件数を取得します。

verify count     count    0

件数が0件であれば存在しないと判断できます。

Selenium IDE 複数のXPATHで OR の結果を取得するには?

 

https://www.google.com/search?q=xpath&oq=xp&aqs=chrome.0.69i59l2j69i57j69i60l3.2631j0j4&sourceid=chrome&ie=UTF-8

上記の結果から

 

/html/body[@id=’gsr’]/div[@id=’main’]/div[@id=’cnt’]/div[@id=’rcnt’]/div[@id=’center_col’]/div[@id=’res’]/div[@id=’search’]/div/div[@id=’rso’]/div[@class=’MjjYud’][1]/div[@class=’g Ww4FFb vt6azd tF2Cxc’]/div[@class=’kvH3mc BToiNc UK95Uc’]/div[@class=’Z26q7c UK95Uc jGGQ5e’]/div[@class=’yuRUbf’]/a/h3[@class=’LC20lb MBeuO DKV0Md’]

/html/body[@id=’gsr’]/div[@id=’main’]/div[@id=’cnt’]/div[@id=’rcnt’]/div[@id=’center_col’]/div[@id=’res’]/div[@id=’search’]/div/div[@id=’rso’]/div[@class=’MjjYud’][2]/div[@class=’g Ww4FFb vt6azd tF2Cxc’]/div[@class=’kvH3mc BToiNc UK95Uc’]/div[@class=’Z26q7c UK95Uc jGGQ5e’]/div[@class=’yuRUbf’]/a/h3[@class=’LC20lb MBeuO DKV0Md’]

上記の2つの要素を取得します。

上記の文を | で結合する事で、OR を取得する事ができます。

Selenium IDE で指定する時は、

click xpath=//AAA | //BBB の形で指定する事で、例えばPC版のボタンとスマフォ版のボタンが違っていても指定する事ができます。

chrome で xpath を求めるには、 拡張機能の xpath helper を使うと SHIFT を押しながらマウスを指定すると特定する事が出来ます。

違うスクリプトで、other_store_value を store していると仮定して、

一度、変数の ${other_store_value} を変数 abc に保存します。

もしも、other_store_value が store されていなと、そのまま文字列となるので、

${abc} === ” ${other_store_value}” かをチェックして、処理を分岐できます。

ちょっと、泥臭いですが…

 

自分の環境では、Export 機能はエラーが出て上手く動作しませんでした。

*.side ファイルを調べると内容はJSONファイルなので、

“tests”: [

{

“id”: “d4be14a3-316b-4d41-bf05-693bdc536989”,

“name”: “test_a”, “commands”: [{

・・・

・・・

},

{

},

{

 

複数のテストがJSONで構成されているだけなので、上記の id と name が含まれるブロック(”{”から”}”まで)をコピーして、id, name を変更してコピペすると取り込む事ができます。

id と name は、多分ユニークであれば良いのかなぁと… (未確認)

CreateSheetGID 関数を選択して実行

updateSheetName はシート名を先頭の2シート以降をシーケンシャルに設定

function CreateSheetGID() {
  var spreadsheet = SpreadsheetApp.getActive();

  var sheet = SpreadsheetApp.getActive().getSheetByName('GID');
  if(sheet == null) {
    spreadsheet.insertSheet('GID', 0);
  }
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('GID'), true);

  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  for (var i = 0 ; i < sheets.length ; i++) {
    Logger.log("\t" + sheets[i].getName() + "\t" + sheets[i].getIndex() + "\t" + sheets[i].getSheetId());

    spreadsheet.getRange('A'+ (i + 1).toString()).activate();
    spreadsheet.getCurrentCell().setValue(sheets[i].getName());

    spreadsheet.getRange('B'+ (i + 1).toString()).activate();
    spreadsheet.getCurrentCell().setValue(sheets[i].getSheetId());
  }

  Logger.log("OK");
}

function updateSheetName() {
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  
  for (var i = 2 ; i < sheets.length ; i++) {
    Logger.log("\t" + sheets[i].getName() + "\t" + sheets[i].getIndex() + "\t" + sheets[i].getSheetId());

    sheets[i].activate().activate().setName("シート"+ (i -1));
  }

}

 

The app references non-public selectors in Payload/*.app/Frameworks/UnityFramework.framework/UnityFramework: applicationWillFinishLaunchingWithOptions:, didReceiveRemoteNotification:

App ストアにアップすると謎エラー

 

ググると、Xcode のバグではないかと…

対処方法は、メソッド名を変更

didReceiveRemoteNotification -> didReceiveRemoteNotificationToUnity

applicationWillFinishLaunchingWithOptions も applicationWillFinishLaunchingWithOptionsToUnity に名前変更

 

Unity ver2020.3.38f1

xcode ver14.0.1

mac ver 12.6

 

一旦、エラーが消えてUP出来ていたが再度、謎エラー

The app references non-public selectors in Payload/*.app/Frameworks/UnityFramework.framework/UnityFramework: loadPlugink

最終的に、 xcode ver13.4.1  にDowngradeして無事アップ成功

© 2023 Falco Tech Blog Suffusion theme by Sayontan Sinha