gpt4 book ai didi

python - 无法单击 iframe 中的下拉列表 - Selenium Python

转载 作者:太空宇宙 更新时间:2023-11-04 01:45:49 24 4
gpt4 key购买 nike

问题:尝试使用 Chrome 驱动程序和带有 Python 的 Selenium 单击 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")

回溯:

Traceback

HTML:

HTML from url

最佳答案

出现错误的原因是 iframe 中存在选择下拉菜单。您需要先切换到 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")

浏览器快照:

enter image description here

关于python - 无法单击 iframe 中的下拉列表 - Selenium Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59108289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com