javascript - 无法在 Python 中使用 Selenium 访问下拉选择

标签 javascript python html selenium xpath

我刚开始在 Python 中使用 Selenium,我正在尝试访问 Barclays Live 网站上的索引数据。登录并加载页面后,我将尝试从页面的下拉列表中选择“Custom1”。与列表关联的 HTML 代码中的选择对象如下所示:

<select name="customViewId" class="formtext" onchange="submitFromSelect('username');return false;">
    <option value="">&nbsp;</option>
    <option value="Favorite Indices">Favorite Indices</option>
    <option value="Custom1">Custom1</option>
    <option value="CB group">CB group</option>
    <option value="Kevin Favorites">Kevin Favorites</option>
    <option value="LB Gov/Cdt intermediate">LB Gov/Cdt intermediate</option>
</select>

这是我尝试访问该对象之前的代码:

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

#Get chrome driver and connect to Barclays live site
browser = webdriver.Chrome("C:\Program Files (x86)\Google\Chrome\chromedriver.exe")
browser.get('https://live.barcap.com/')

#Locate username box and enter username
username = browser.find_element_by_name("user")
username.send_keys("username")

#Locate password box and send password
password = browser.find_element_by_name("password")
password.send_keys("password")

#Click login button
login = browser.find_element_by_id("submit")
login.click()

#Open page where you can select indices
browser.get("https://live.barcap.com/BC/barcaplive?menuCode=MENU_IDX_1061")

我已经尝试了一些我发现的建议解决方案,通常会出现错误“无法定位元素:”,然后是我尝试使用的任何方法来访问选择对象。我似乎无法通过名称、xpath 或使用 Select() 函数访问它。我试过在代码中放置等待时间,以防元素尚未加载,但没有成功。一些我希望能起作用但没有起作用的例子是:

select_box = browser.find_element_by_name("customViewId")
select_box = browser.find_element_by_xpath("//select[option[@value='Custom1']]"

我的背景不是编程,如果这是一个愚蠢的问题,请放轻松。先谢谢您的帮助。

最佳答案

The select element is indeed located in an iframe.

这意味着您应该 switch进入框架的上下文,然后才找到元素:

browser.switch_to.frame("frame_name_or_id")
select_box = browser.find_element_by_name("customViewId")

如果您需要从框架的上下文中返回,请使用:

browser.switch_to.default_content()

至于操作选择框部分,有更好的方法 - 使用 Select class :

from selenium.webdriver.support.select import Select

select_box = Select(browser.find_element_by_name("customViewId"))
select_box.select_by_visible_text("CB group")

关于javascript - 无法在 Python 中使用 Selenium 访问下拉选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38356550/

相关文章:

python - 配置 Mercurial 服务器

python - 如何检查身份验证是否适用于扭曲?

javascript - 如何成为@media 的第一名?

javascript - 如何使用 JavaScript 删除第一个文本区域上的文本来清除 2 个文本区域?

java - 字符串长度从 Javascript 到 Java 代码不同

javascript - Discord.js:如何发送消息并收集 react

javascript - 数据属性上的 Json

python - 如何使用 pysnmp 获取 SNMP 数据?

html - 使用纯 CSS 在 div 的末尾添加一个 X?

javascript - 有没有更简单的方法使用 JavaScript 连接变量?