私はSeleniumでWebサイトをナビゲートするためのコードを書いています(私たちのWebサイトをテストする前の練習として)。3つの個別のドロップダウンメニューで値を繰り返し処理し、製品データを含む最終ページを取得しようとしています。
これまでのところ、最初の最初のメニューからのデータと2番目のメニューからの関連データを印刷できますが、最初のメニューによって作成されたリストの最初の要素についてのみです...それはおそらく理解するのが難しいので、この例を検討してください:
DropdownAには次の値が含まれます。
あいうえお
「A」を選択すると、DropdownBに次の値が入力されます。
1 2 3
私の目標は、ツリー全体をカバーして値を返すことです。
A-1,2,3
B-2,3,4
C-3,4,5
等
戻った後の私のスクリプト爆弾:
A-1,2,3
これが私のコードの例です:
from pyvirtualdisplay import Display
from selenium import webdriver
import time
display = Display(visible=0, size=(1024, 768))
display.start()
driver = webdriver.Firefox()
url = 'http://www.website.com'
driver.get(url)
driver.find_element_by_id('ctl00_ContentPlaceHolder1_pc_selector_selMake').click()
make_list = driver.find_elements_by_css_selector('#ctl00_ContentPlaceHolder1_pc_selector_selMake option')
for raw_make in make_list:
if 'Select' in raw_make.text:
continue
make = raw_make.text
print make
raw_make.click()
time.sleep(1)
model_list = driver.find_elements_by_css_selector('#ctl00_ContentPlaceHolder1_pc_selector_selModel option')
for raw_model in model_list:
if 'Select' in raw_model.text:
continue
model = raw_model.text
print ' ', model
driver.close()
display.stop()
正確なエラーは次のとおりです。selenium.common.exceptions.StaleElementReferenceException: Message: u'Element is no longer attached to the DOM'
私はSeleniumを初めて使用するので、これがばかげた質問である場合は、ご容赦ください。私は、頭に浮かぶすべてのものを試してみること、またはオンラインで読んだものの何も役に立たなかったことを認めるよりも多くの時間を費やしてきました(私が遭遇した例のほとんどはJavaで書かれているためです。 mはJavaの男ではありません...)。
ヘルプ、提案、解決策、リソースなどは大歓迎です。
前もって感謝します!