###前提・実現したいこと
Selenium WebdriverでTinyMCE Advancedを使用したWordPressの投稿テストをしたい
###発生している問題・エラーメッセージ
iframeの中のdomの値を変更できなく、困っております。
WordPressをインストールしただけの状態だと普通にできました、
今回試しているのが『TinyMCE Advanced』というプラグインを使用しているせいか
本文の入力欄にiframeを使用した箇所ができてしまい、そこの要素がうまく触れていないように思われます。
以下の動画や参考サイトを見る限りseleniumIDEからだと設定できるようなのですが、
webdriverからのやり方がわかりません。
IDEでiframe内のinnerHTMLを変更する(YouTubeの動画)
Selenium IDEでinnerHTMLを操作する
WebDriverError: Element is not visible at WebDriverError (C:\xxx\node_modules\selenium-webdriver\lib\error.js:27:5) at Object.throwDecodedError (C:\xxx\node_modules\selenium-webdriver\lib\error.js:497:15) at parseHttpResponse (C:\xxx\node_modules\selenium-webdriver\lib\http.js:519:13) at doSend.then.response (C:\xxx\node_modules\selenium-webdriver\lib\http.js:441:30) at process._tickCallback (internal/process/next_tick.js:103:7) From: Task: WebElement.sendKeys() at thenableWebDriverProxy.schedule (C:\xxx\node_modules\selenium-webdriver\lib\webdriver.js:807:17) at WebElementPromise.schedule_ (C:\xxx\node_modules\selenium-webdriver\lib\webdriver.js:2015:25) at WebElementPromise.sendKeys (C:\xxx\node_modules\selenium-webdriver\lib\webdriver.js:2178:19) at csv.parse (C:\xxx\xxx.js:27:38) at Parser.<anonymous> (C:\xxx\node_modules\csv-parse\lib\index.js:71:16) at emitNone (events.js:91:20) at Parser.emit (events.js:185:7) at endReadableNT (_stream_readable.js:974:12) at _combinedTickCallback (internal/process/next_tick.js:74:11) at process._tickCallback (internal/process/next_tick.js:98:9)
###該当のソースコード(一部抜粋)
javascript
1const fs = require('fs'); 2const csv = require('csv'); 3const webdriver = require('selenium-webdriver'), 4 By = webdriver.By, 5 until = webdriver.until; 6const driver = new webdriver.Builder().forBrowser('firefox').build(); 7 8driver.get("ログインURL"); // ログインURL 9driver.findElement(By.id("user_login")).sendKeys("ログインID"); // ログインID 10driver.findElement(By.id("user_pass")).sendKeys("パスワード"); // ログインパスワード 11driver.findElement(By.id("wp-submit")).click(); // ログイン 12driver.findElement(By.linkText("投稿")).click(); 13driver.findElement(By.linkText("新規追加")).click(); 14driver.findElement(By.id("title")).sendKeys("タイトル"); 15// ここに本文を入力する処理を入れたい。 16driver.findElement(By.id("publish")).click();
実際にはcsvから読み込んだ値を入力する仕様になっています。
###試したこと
以下のように実装してみたのですが、上記のようなエラーが発生しました。
javascript
1frame = driver.findElement(By.id('content_ifr')); 2frame.findElement(By.xpath("//p")).sendKeys("本文");
###補足情報(言語/FW/ツール等のバージョンなど)
node(v6.9.5)
geckodriver-v0.18.0-win64
他にも必要な情報がありましたらご指摘ください。
よろしくお願いいたします。
あなたの回答
tips
プレビュー