[Selenium]find_element_by_class_nameとfind_element_by_xpath

スポンサーリンク

FirefoxのSelenium IDEで、pythonへテストケースのエクスポートを行ったところ、
クラスのクリックの処理で以下のようなエラーコードに変換されていて、処理が行われないようになっていた。

# ERROR: Caught exception [Error: unknown strategy [class] for locator [class=classname]]

表示されているフォームの中のclassではなく、jsで生成された中にあるclassだった。
Selenium IDE上での実行ではうまく動いていたが、Pythonからの実行はできない(読めないのかな?)ようです。

そのために、その生成された中を見るようにするには、
find_element_by_xpathを使うようです。

ダメだった例

driver.find_element_by_class_name("classname").click()

うまくいった例

driver.find_element_by_xpath("//*[@class='classname']").click()

これで、Firefox、Chromeの両方で動作しました。
htmlソースを表示して、該当するidなりnameなりclassなりを確かめて、指定する必要があります。
あと、操作ブラウザを変更するやり方

browser.switch_to_window(browser.window_handles[1])
time.sleep(3)

[]の数字で操作するタブを決める。1番最初に操作していたタブが数字の0から始まるり、続いて1,2…と増えていく。

参考にしたサイト
Pythonでスクレイピング3(Selenium):クレジット(MUFG)カードの支払額の取得 →消えてました。

コメント

タイトルとURLをコピーしました