Selenium Webdriver には次の問題があります。「ブランド」と「アイテム」をテストしているページには、2 つのドロップダウン メニューがあります。「アイテム」のオプションは、選択したブランドによって異なります。考えられるすべての選択肢を反復して、ブランドとアイテムのペアを印刷しようとしています。Select() を使用して、各ドロップダウン メニューからオプションを選択する 2 つの方法を使用します。
def retryingSelectOption(name,n):
result=False
attempts=0
while attempts<5:
try:
element=Select(driver.find_element_by_name(name))
element.select_by_index(n)
print element.all_selected_options[0].text
result=True
break
except StaleElementReferenceException:
pass
attempts+=1
return result
そして .click() を使用:
def retryingClickOption(name,n):
result=False
attempts=0
while attempts<5:
try:
driver.find_element_by_name(name).find_elements_by_tag_name("option")[n].click()
result=True
break
except StaleElementReferenceException:
pass
attempts+=1
return result
私の問題は、上記の関数がTrueを返し、選択したオプションを印刷すると正しい答えが表示されても、ランダムな瞬間のように思えます(機能する場合と機能しない場合があります)が、ブラウザには前のオプションが表示されます。したがって、基本的にSeleniumは、正しいオプションを選択したことを通知しますが、ブラウザには前のオプションが表示されます.何が悪いのかわかりません. もう少し確認した後、ブラウザのどこかを手動でクリックすると、オプションが実際に正しい値に更新されるようです。ブラウザがハングするようです。