无法单击 iframe 中的下拉菜单 - Selenium Python

2024-02-01

问题:尝试使用 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 内存在选择下拉列表。 您需要先切换到 iframe 才能选择元素。

Induce WebDriverWait and 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")

浏览器快照:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法单击 iframe 中的下拉菜单 - Selenium Python 的相关文章

随机推荐