1

RPAならではと思しき想定外の状況で深みにハマってます。
困ってるポイントをなるべくスマートにクリアしたいです。
みなさまのお知恵を拝借させてください。

掴みかけた光で、カッコいいXPathが見出せれば理想です。
そもそもそんな表記なんて存在しないのだろうか。
最小限の軌道修正で済めば嬉しいものの、バランスポイントっぽければ泥臭い攻めかたも厭わずです。
どんな手が考えられますか。
★はこれから試すものです。

 

環境

  • WinActor721 or 740
  • Chrome9x系

 

シチュエーション

  • ブラウザ操作のシナリオ
  • WebDriver制御
  • 値の取得
  • 複数行にわたる住所

 

取得したい箇所の見えかた(マウス操作でコピって取得できる値)

〒 000‐0000 
□□県□□市□□0丁目 00-0  
□□レジデンス0000    

  • 末尾のスペースも忠実に再現(何かを物語ってそう、引用にすると消えちゃうかも)

 

ほかのバリエーション

□□県□□市□□00-00  

  • 号相当のブロックとかがないと、困ってるポイントが露呈する??

 

「値の取得」のXPath

//td//label[contains(text(),"項目名")]/../following::td//div

  • 表内の項目名を手掛かりに、右隣のセルのdiv内の値を取得してる
  • 今ならもっとスマートなXPathを書けそうな気がする
  • この投稿を機に、みなさまのノウハウを取り込んで、よりスマートにしたい

 

取得される値

〒 000‐0000 □□県□□市□□0丁目 00-0 - - □□レジデンス0000    

 

困ってるポイント

  • 住所と建物名等の間に無用な半角ハイフンが入っちゃうケースがある
  • 作成済みのフローで、効率的に除去する方法を見出しにくそう
  • 後続処理で使うVBAで全力加工して正規化してて、ハイフンは半角に揃えてるため、この位置に残る半角ハイフンは掴みにくそう

 

該当箇所のHTMLの例

<div>
  <label>〒</label>
  <label> 000‐0000 </label><br>
  (略)
  <label aria-hidden="true">-</label>
  (略)
  <label>(略)レジデンス0000 </label>
</div>

  • ポイントでなさそうな属性の類は軒並み省略
  • 住所はdiv内にかぱっと収まってる
  • 住所をまるっと1つの変数に取得したい
  • 取得したい値はlabel内のtextのみ

 

「値の取得」後の処理

  • 正規表現ライブラリでHTMLタグを除去
  • HTMLの一部として改行の<br>も削除される
  • 改行の削除前に行末のハイフン(<br>手前のスペースとハイフン)を除去しておく必要があるっぽい(ここが正攻法の核心か)★

 

掴みかけた光

  • 無用な半角ハイフン入りのlabelは、属性と値がaria-hidden="true"で共通してるっぽい
  • XPathでこの属性と値の部分を除外した値を取得できれば理想

 

試行錯誤して掴んだ状況

  • ダブルクリックとかトリプルクリックの連打でも、1行ずつしか選択できず

 

卑近な解決策

  • 「画像マッチング」でドラッグ、「クリップボード」経由で変数に格納
    • できなくはなさそうだけど、最終手段に取っておきたい
    • やむなく採用するとしたら、いくつかの過去ログを参考にしつつ、わたしにとって初めての「画像マッチング」でのドラッグ

 

今回ググったワード

https://www.google.com/search?q=aria-hidden

  • aria-hidden="true"で、読み上げの対象外、かつCSSとかで?表示の対象外にもされてる模様

【HTML】aria-hiddenってなに?読み上げスキップ指定の書き方|Web Work Plus
https://webwork-plus.com/content/design/aria-hidden.html

  • これまでに、::beforeとか::afterも見かけたことがあった
  • 今回のリサーチで、用途が少しわかった気になれた

 

https://www.google.com/search?q=XPath+属性+除外

  • 取得してからPython?上でremove?

xpath で除外条件を指定 - dak ブログ
https://blog.goo.ne.jp/dak-ikd/e/48ec995a4f8cb490b839ff1e58033068

  • 事後に正規表現ライブラリでHTMLを除去する方法と近そう

 

  • ここは試す余地があるのかも★

xml — XPathでの選択から特定の要素を除外する
https://www.web-dev-qa-db-ja.com/ja/xml/xpathでの選択から特定の要素を除外する/967231184/

 

別視点

  • 「属性値の取得」や「プロパティ値の取得」でvisibleTextみたいな属性/プロパティの値を取得できたりして★

https://winactor.com/questions/?q=ブラウザ関連ライブラリ属性値の取得のご紹介

この質問は解決済みのためクローズされています。
anothersolution ベストアンサーとして選択しました
回答とコメントは、会員登録(無料)で閲覧できるようになります。