Python Selenium でドロップダウンが選択できません
WordPressの管理画面を Python Selenium で自動操作を試みているところですが、
見事にハマってしまいました。ご教示のほどよろしくお願いします。
■ 自動操作のプロセス
① WordPress 管理画面にログイン(OK)
② プラグインの操作画面に移動(OK)
③ CSVファイルのアップロード(OK)
④ アップロード後に表示されるドロップダウンメニューの選択(現在ここで躓いています)
[![画像][3]][3]
手動であれば、下図のようにメニューの選択ができます。
コードは、下記のように書きました。
# coding: utf-8
from selenium.webdriver.support.select import Select
from selenium import webdriver
import pyautogui
from time import sleep
# ブラウザは、Chrome を使用
browser = webdriver.Chrome()
# プラグインの画面に移動
browser.get(wai1url)
sleep(5)
# csvファイルをアップロード
browser.find_element_by_link_text(u"ファイルをアップロードする").click()
sleep(2)
pyautogui.typewrite('link_20')
sleep(3)
pyautogui.press('down')
sleep(1)
pyautogui.press('return')
sleep(2)
#
# csvファイルのアップロード後、ドロップダウンが表示されます。AJAX?
#
# ページをスクロール
browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# 下記コードは機能しました。
browser.find_element_by_link_text(u"既存の項目").click()
sleep(3)
browser.find_element_by_link_text(u"新規の項目").click()
sleep(3)
# ドロップダウンメニューの選択(機能しません)
select = Select(browser.find_element_by_name('custom_type_selector'))
for index in range(len(select.options)):
select = Select(browser.find_element_by_name('custom_type_selector'))
select.select_by_index(4) # select Users
ドロップダウンのHTMLは、下記の通りです。
<select name="custom_type_selector" id="custom_type_selector" class="wpallimport-post-types">
<option value="post" data-imagesrc="dashicon dashicon-post" selected="selected">投稿</option>
<option value="page" data-imagesrc="dashicon dashicon-page" >固定ページ</option>
<option value="taxonomies" data-imagesrc="dashicon dashicon-taxonomies" >Taxonomies</option>
<option value="import_users" data-imagesrc="dashicon dashicon-import_users" >Users</option>
</select>
他にもいくつか試してみました。
[ 1 ]
s1 = Select(browser.find_element_by_id('custom_type_selector'))
s1.select_by_index(4)
結果:selenium.common.exceptions.UnexpectedTagNameException: Message: Select only works on <select> elements, not on <div>
[ 2 ]
s1 = browser.find_element_by_xpath("//div[@class='wpallimport-choose-import-direction']/select/option[@value='post']")
s1.click()
結果: Message: no such element: Unable to locate element・・・
[ 3 ]
s1 = browser.find_element_by_id('custom_type_selector')
for option in s1.find_elements_by_tag_name('option'):
if option.text == 'Users':
option.click()
sleep(60)
break
このように色々トライしてみましたが、同じようなエラーばかりです。
ただ普通のHTMLページだと、
driver.get("http://the-internet.herokuapp.com/dropdown")
s1 = Select(driver.find_element_by_id('dropdown'))
s1.select_by_index(4)
このようにすれば、ドロップダウンメニューを選択できるのですが・・・。
ぜひ、お助けください