![](/img/trans.png)
[英]Python Selenium: Unable to find xpath to click on element within iframe
[英]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:
您收到錯誤的原因是 iframe 中存在 select 下拉列表。 您需要先切換到 iframe 才能選擇元素。
引入WebDriverWait
和frame_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.