pseudowire

調べたことを書き残す

XPATH内の特定のステータスに応じた条件分岐

XPATHの特定のステータスを条件にして処理を分岐

XPATHをアンド条件で検索する、など方法を考えたが、結局whileで回すのがシンプルだった。

# statusがokではない限り、https://hogehogeにアクセスし続ける
# statusがokになった時、hogehogeを出力する

import datetime

while len(driver.find_elements(By.XPATH, "//a[@status='ok']")) == 0:
  driver.get('https://hogehoge')

else:
  now = datetime.datetime.now()
  print('{0:%m%d-%H:%M:%S}_hogehoge'.format(now))

作ったプログラムをバックグラウンドで実行させる方法

#シンプルに動かす場合
nohup python sample.py &

# ログファイルをカレントディレクトリに出力させる場合
nohup python sample.py > log.txt 2> error.txt &

以下のpsコマンドで動作を確認

ps x
ps -aux | grep python

参考リンク

qatechhub.com

pg-chain.com

blog.mktia.com

akiniwa.hatenablog.jp

blog.katsubemakito.net

cronの基本操作など

CRONの初期操作

# CRONのインストール
apt install -y cron

# CRONの起動状況確認
/etc/init.d/cron status

# CRONの起動
/etc/init.d/cron status

CRONの基本操作

# crontabを別名でコピー
$ crontab -l > crontab-custom

# 別名コピーしたファイルを編集
$ vi crontab-custom

#編集したファイルをcrontabに読み込ませる
$ crontab crontab-custom 

#反映されたことを確認
$ crontab -l

CRONの基本設定

#Pythonの絶対パスの確認
$ which python3

/usr/local/bin/python3


# CRON実行結果をログ出力(日時をログ名にしてログ出力)
$ vi crontab-custom

* * * * * [python3 Full Path] [program Full Path] >> [logfileのパス]/[logfile name]-`date +\%Y-\%m-\%d-\%H-\%M-\%S`.log 2>&1

# 例)4時から7時の間、5分おきに実行
*/5 4-7 * * *

参考リンク

nishinatoshiharu.com

qiita.com

Docker for DesktopでSeleniumを動かしてハマった部分

立ち上げ時にやること

タイムゾーンがズレているとサイト訪問時にタイムゾーン変更を促すポップアップが上がってきてSeleniumの動作が止まる。 そのため、Seleniumを動かすマシンでタイムゾーンの設定をしようとした。 かなり手こずったので備忘録を残す。
apt-upgradeを初手で行うとusrmergeがない、と言われハマる。

docker run -e TZ=Asia/Tokyo --rm -it -p 4444:4444 -p 5900:5900 -p 7900:7900 --shm-size 2g seleniarm/standalone-chromium:initimage

sudo apt update
sudo apt install python3-pip
sudo apt install python3-selenium

忘れそうなので、これもメモ

VNCブラウジング動作を確認する方法

Docker Seleniumwebブラウザ操作を表示する。
5900ポートでVNCサーバに繋げられる。

Finderを開いて command + k

vnc://localhost:5900 
XPATHでもCSS_Selectorでも選択できない要素のクリック

普通にクラスを指定してもダメ。
XPATHでもCSS_Selectorで指定してもクリックできない。

* driver.find_element(By.CLASS_NAME, "btn_close").click()
* driver.find_elements(By.CSS_SELECTOR, “a[href*=“#”]”).click()

ずっとこんな感じの同じエラーが出てくる。

* selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted:
* selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
* AttributeError: 'list' object has no attribute 'click'

試行錯誤の末、マウスオーバーさせたらClickが成功した。

    push = driver.find_element(By.CLASS_NAME, "btn_close")
    actions = ActionChains(driver)
    actions.move_to_element(push)
    actions.click()
    actions.perform()
    time.sleep(2)

さらに試行錯誤の末、こうなった。

    push = driver.find_element(By.XPATH, "コピーしたxpath")
    actions = ActionChains(driver)
    actions.click(push).perform()
Docker Imageを保存する方法
docker ps
docker commit --pause=false ttfb2dagaa0 seleniarm/standalone-chromium:hogehoge

docker commit --[OPTION] [CONTAINER ID] [Repository:Tag]

参考リンク

gihyo.jp

qiita.com

zenn.dev

qiita.com

qiita.com

posipochi.com

zenn.dev

holiday-programmer.net

qatechhub.com

GCP Always Free 備忘録

GCP Always Free範囲でGCE作成

個人的に注意が必要だと思ったのがNetwork Service。プレミアムのほうが課金されそうだが、逆にスタンダードにすると無料枠の対象外になるという罠がある。

GCPを頂点として見て、GCPの外が下流、という見方。 上り通信(Inbound:ダウンロード通信)は課金対象外。 1GBまでの下り通信(Outbound:アップロード通信)は無料。

  • 上り:Ingress(Inbound)

  • 下り:Egress(Outbound)


設定備考

  • us-west1

  • e2-micro

  • Disk Type: 標準永続ディスク

  • External IP Address: ephemeral

  • Network Service Tier: Premium

  • OS: ubuntu-2004-focal-v20230616


参考リンク

se-abeaver.com

cloud.google.com

qiita.com

qiita.com

qiita.com


Selenium 4.10 を使った自動ログイン

ひさびさにSeleniumを触ったらバージョンが変わってコードも変わっていたので備忘録。 自動予約をしてくれるプログラムを作成中。

環境

参考リンク

Selenium NameError: name 'By' is not defined - Qiita

【Python】スクレイピング: SeleniumとBeautiful Soupの主なメソッド一覧 | masayanblog

Ubuntu 20.10 on Raspberry Pi 4B にSeleniumの環境を構築してスクレイピング その2:ログインしてページ遷移 - Bye Bye Moore

Selenium webdriverよく使う操作メソッドまとめ - Qiita

コード

import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

#Chromeドライバの設定
options = webdriver.ChromeOptions()
service = Service(executable_path=r'/usr/bin/chromedriver')
options = webdriver.ChromeOptions()
#options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(service=service, options=options)


#画面遷移
driver.get('https://www.amazon.co.jp/')

# ログイン画面へ遷移
driver.find_element(By.ID, "nav-link-accountList").click()

# ログインIDを入力
login_id = driver.find_element(By.ID, "ap_email")
login_id.send_keys('example@example.com')

# 「次に進む」をクリック
nextb = driver.find_element(By.CLASS_NAME, "a-button-input")
nextb.click()
time.sleep(1)

# パスワードを入力
password = driver.find_element(By.NAME, "password")
password.send_keys('example')

# 「ログイン」をクリック
nextb = driver.find_element(By.ID, "signInSubmit")
nextb.click()
time.sleep(1)

覚書:APIの叩き方(基礎)

APIの使い方について基礎的な部分を調べたので、備忘録。

参考サイト:

APIの仕組みが分かる・使いこなせる人材になれる記事(Pythonコード付き) - Qiita

利用したAPI

天気予報 API(livedoor 天気互換)

無料APIの一覧を紹介するサイト:

APIを探して、試して、使える - APIbank

【2023年最新】作りたいアプリ別API一覧を全紹介〜随時更新〜 | 侍エンジニアブログ

備忘録的なスクショ

コード

出力例

Isaac simインストールでハマったポイント

環境

  • NVIDIA A40
  • Intel Xeon Gold 6342
  • ESXi Version: 7.0.3
  • Ubuntu Version: 20.04
  • Isaac Sim Version: 2022.1.0 beta
  • Driver Version: 510.47.03
  • CUDA Version: 11.6
  • Veiw Agent&VADC Version: 2203-8.5.0

経緯

  • 既存のIsaac sim環境の動作が遅いからvGPU付け替えたらIsaac simが起動しなくなった
  • 諦めて新しくUbuntu20.04のVMを作成して環境を構築し直すことにした
  • 手順通り、vGPU Driverをインストール
  • 手順通り、Omniverse Launcherをインストール
  • Isaac sim 2022.1.0をインストールしようとするもエラーにより失敗
Error occurred during installation of Isaac Sim: Command failed: 
"/home/nvidia/.local/share/ov/pkg/
isaac_sim-2022.1.0/omni.isaac.sim.post.install.sh"

解決方法

  • 横着してVMRC上で作業していたのがいけなかった模様
  • キチンとviewagent & vadcをインストールしてVDI接続
  • Isaac sim 2022.1.0のインストールが成功

成功するまでに試した事

  • MESA_GL_VERSION_OVERRIDE=4.6を試す>事象再現
  • Isaac sim 2021.1.0のインストールを試行>インストール成功。しかし起動しない
  • Isaac sim 2021.1.0のディレクトリから./isaac-sim.shを直接実行>クラッシュ発生
  • Ubuntu 22.04インストールして実行>事象再現

気づき

ゲーミングPCを初めて買った時、しばらくGPUが使えていないことに気づかなかったことがある。 グラボにディスプレイ挿さないとGPU処理にならないってやつ。

おそらく、今回の事象もそれに近からず遠からずな原因かと思う。 VMRCでマシンに接続してるとGPUが働かないっぽい? VDI接続するとGPUが働いているっぽい?

なんとなくの感覚で雰囲気を理解したことに満足して先に進もうと思う。

Ref

NVIDIA GRID vGPU ディスプレイ ドライバのインストール

Failed to install isaac sim 2021.2.0 version - Developer - NVIDIA Developer Forums

Linux 仮想マシンでの Horizon Agent のインストール

View Agent Direct-Connection プラグインのインストール