簡體   English   中英

無法點擊 iframe 中的下拉菜單 - Selenium Python

[英]Unable to click on dropdown within iframe - Selenium Python

問題:嘗試使用 Chrome 驅動程序和 Selenium 和 Python 在 iframe 中單擊下拉列表。

大家好。 昨天,一位用戶好心地幫了我一個新手查詢。 我無法點擊 url 中的鏈接,這是因為我必須切換到 iframe。 這部分代碼現在可以工作了,我導航到我希望進行選擇的下拉菜單。

我已嘗試通過修改我的代碼來訪問此元素,但收到無法找到該元素的回溯。 我正在嘗試使用 Select 將下拉列表的值更改為“Aldershot”,通過名稱和可見文本查找元素。 非常感謝任何建議。

#setup
from selenium import webdriver
from selenium.webdriver.support.select import Select

#utilise chrome driver to open specified webpage
driver = webdriver.Chrome("/Users/philthomas/Desktop/web/chromedriver")
driver.maximize_window()
driver.get("http:enfa.co.uk")

#switch to specific iframe and click on 'clubs' button on left hand menu
driver.switch_to.frame(2);
ClubsLink=WebDriverWait(driver,10).until(EC.presence_of_element_located((By.XPATH,
"//span[contains(text(),'Clubs')]")))
ClubsLink.click()

#find drop-down menu and choose 'Aldershot'
select_box = Select(driver.find_element_by_name("team"))
select_box.select_by_visible_text("Aldershot")

追溯:

追溯

HTML:

來自網址的 HTML

您收到錯誤的原因是 iframe 中存在 select 下拉列表。 您需要先切換到 iframe 才能選擇元素。

引入WebDriverWaitframe_to_be_available_and_switch_to_it ()

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.support.select import Select

#utilise chrome driver to open specified webpage
driver = webdriver.Chrome("/Users/philthomas/Desktop/web/chromedriver")

driver.maximize_window()
driver.get("http:enfa.co.uk")

#switch to specific iframe and click on 'clubs' button on left hand menu
WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.NAME,"left")))
ClubsLink=WebDriverWait(driver,10).until(EC.presence_of_element_located((By.XPATH,
"//span[contains(text(),'Clubs')]")))
ClubsLink.click()

#return from iframe
driver.switch_to.default_content()
#Switch to another iframe
WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.NAME,"main")))

#find drop-down menu and choose 'Aldershot'
teamselect=WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.NAME,"team")))
select_box = Select(teamselect)
select_box.select_by_visible_text("Aldershot")

瀏覽器快照:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM