前提・実現したいこと
TypeScript + Selenium で自動化テストを作ろうとしています。
ただ、ある画面でのみ要素指定できずにエラーとなってしまいます。
- Xpathは以下のように指定しています
1.Chrome 上で、XPath を取りたい要素を右クリック、「検証」を選ぶ
2.デベロッパーツール上で該当要素を右クリック、「Copy→Copy XPath」を選ぶ
発生している問題・エラーメッセージ
NoSuchElementError: no such element: Unable to locate element: {"method":"xpath","selector":"<対象のxpath>"}
該当のソースコード
TypeScript
1const webdriver = require('selenium-webdriver'); 2const { Builder, By, until } = webdriver; 3const capabilities = webdriver.Capabilities.chrome(); 4 5const TEST_URL = "https://hogehoge/"; 6const ID = "id"; 7const PW = "pass"; 8 9// ブラウザ立ち上げ 10const driver = new Builder().withCapabilities(capabilities).build(); 11 12// テスト画面を開く 13driver.get(TEST_URL); 14 15// IDを入力 16console.log("IDを入力します"); 17driver.findElement(By.xpath('<対象のxpathを指定>')).sendKeys(ID); 18console.log("IDを入力しました"); 19 20// パスワードを入力 21driver.findElement(By.xpath('<対象のxpathを指定>')).sendKeys(PW);
試したこと
- Googleで検索する、という操作で上記と同じようにXpathで要素を指定して実行したところうまくできました。
- Python + Selenium で同じXpathを指定して同じような処理をしたところエラーにはならなかったのでXpathが違う、ということはなさそうです
TypeScript
1/* 2Googleで検索してみる 3→これは成功した 4*/ 5 6const webdriver = require('selenium-webdriver'); 7const { Builder, By, until } = webdriver; 8const capabilities = webdriver.Capabilities.chrome(); 9 10const GOOGLE_URL = "https://www.google.com/"; 11const SEARCH_WORD = "TSでselenium"; 12 13const driver = new Builder().withCapabilities(capabilities).build(); 14 15driver.get(GOOGLE_URL); 16 17driver.findElement(By.xpath('/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input')).sendKeys(SEARCH_WORD); 18driver.findElement(By.xpath('/html/body/div[1]/div[3]/form/div[1]/div[1]/div[3]/center/input[1]')).click();
補足情報(FW/ツールのバージョンなど)
- Windows10
- typescript@4.2.4
- selenium 3.141.0
- VScode
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/21 14:08
2021/04/21 15:02 編集