質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

2回答

8112閲覧

Selenium.WebDriver にて ctl +"v"をsendKey してもテキストがペーストされない件

nittai

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

2クリップ

投稿2020/07/10 07:33

前提・実現したいこと

VBA より Google Chrome上にてGoogle 翻訳使用して
翻訳プログラムを作成しています
Chromeの操作はSelenium.WebDriverにプログラミングしました

背景として
以前IE上にてGoogle 翻訳を使用していましたが
IEがなくなるのでプログラム修正変更しています

発生している問題

sendKey テキスト だと遅いので クリップボードを介して
Google 翻訳 にテキスト書き込みすることにしました
sendKey にて ctl +"v" をおこなっていますが 実行していますが
テキストがペーストされません

該当のソースコード

VBA Selenium

1 Dim Driver As New Selenium.ChromeDriver 2 Dim elm As Selenium.WebElement 3 Dim elm1 As Selenium.WebElement 4 Dim CB As New DataObject 5 Dim TranslateText as string 6 Dim url as string 7 Dim CB As New DataObject 8 9 TranslateText="This is a pen" 10'google 翻訳にて英語→日本語 11 url = "https://translate.google.co.jp/?hl=ja#97/102/" 12 Driver.Start "chrome", url 13 Driver.Get "/" 14 CB.SetText TranslateText 15 CB.PutInClipboard 16 CB.GetFromClipboard 17 18 19 Set elm = Driver.FindElementByXPath("//*[@id=""source""]") 20 elm.Clear 21 elm.Click 22 23 elm.SendKeys Driver.Keys.Control, "v" 24 25 26 Driver.Wait 500 27 28 29 Set elm1 = Driver.FindElementByCss("body > div.container > div.frame > div.page.tlid-homepage.homepage.translate-text " & _ 30 "> div.homepage-content-wrap > div.tlid-source-target.main-header.small-font > div.source-target-row > div.tlid-results-container.results-container " & _ 31 "> div.tlid-result.result-dict-wrapper > div.result.tlid-copy-target > div.text-wrap.tlid-copy-target > div > span.tlid-translation.translation") 32 33 mesgox elm1.Text

試したこと

1.クリップボードの内容確認
elm.SendKeys Driver.Keys.Control, "v" にてブレイクして
手作業にて直接  ctl +"v" を入力すると
Google 翻訳 ページに張り付けることができます

2. elm.SendKeys Driver.Keys.Control, "v" の確認

 1.クリップボードの内容確認 後データクリアして
elm.SendKeys Driver.Keys.Control, "v" 実行すると
データ貼り付けされる

3.Backspace キーの確認

   elm.SendKeys "aaaa"
elm.SendKeys Driver.Keys.Backspace

補足情報(FW/ツールのバージョンなど)

Windows10
EXCEL 2013
Google Chrome バージョン: 83.0.4103.116(Official Build) (64 ビット)
ChromeDriver 83.0.4103.39

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自分もはまり調べまくって方法が分かったので。

Driver.Keyboard.KeyDown (skey.Control) elm.SendKeys "v" Driver.Keyboard.KeyUp (skey.Control)

コントロールキーを押した状態にしてvを送るという単純な方法で行けます。
こんなのわかるわけないだろうと思いました。

投稿2022/01/25 05:54

yamamo-

総合スコア4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ctl+vの前に「Doevents」や「Driver.Wait 500」をはさんではいかがでしょうか。
コピー処理が間に合っておらずctl+vの際にはクリップボードが空のままかもしれません。
少し待つことで改善の可能性があります。

投稿2020/07/13 00:12

radames1000

総合スコア1925

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nittai

2020/07/13 02:02

回答ありがとうございます ctl+vの前に「Doevents」や「Driver.Wait 500」をはさんでみましたが 現象は同じでした 1,2の作業より実行時クリップボードが空ででないのではないようです タイムアウトの様です 1度手作業でペーストするとコードから貼り付け可能です。それも劇的に高速になります もう少し調べてみますがまた何かアドバイスありましたらどうそよろしくお願いします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問