python - 如何在 selenium 和 python 中使用下拉菜单和输入文本框?
问题描述
我在 python 中使用 selenium,在这个网页中,我想在下拉菜单中的不同选项之间进行选择,然后输入一些值。在该网页中,单击“新订单”按钮后,会弹出一个新窗口,我必须在符号之间进行选择,例如“USDCAD”。之后,我必须输入一些值,例如“获利”和“止损”。我不知道如何做这些,因为不幸的是我不太了解网页的工作原理以及 HTML 是什么......!这是我为在下拉菜单选项之间进行选择而编写的代码,但出现错误:
def fast_multiselect(driver, element_id, labels):
select = Select(driver.find_element_by_id(element_id))
for label in labels:
select.select_by_visible_text(label)
fast_multiselect(driver, 'symbol', "USDCAD")
这是我得到的错误:
selenium.common.exceptions.UnexpectedTagNameException: Message: Select only works on <select> elements, not on <th>
完整代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome('./chromedriver')
driver.get('https://www.mql5.com/en/trading')
time.sleep(10)
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@id='webTerminalHost']")))
time.sleep(10)
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@title='New Order']/span"))).click()
time.sleep(5)
def fast_multiselect(driver, element_id, labels):
select = Select(driver.find_element_by_id(element_id))
for label in labels:
select.select_by_visible_text(label)
fast_multiselect(driver, 'symbol', "USDCAD")
如果您能帮我从下拉菜单中选择并输入这些值,我将不胜感激。此外,如果您解释了一些重要和基本的事情,或者是否有快速指南(可能是一个有用的链接),它可以帮助我理解我应该如何处理 HTML 代码来处理像我的问题这样的基本工作。
解决方案
您需要定位一个选择标签。
<select class="input-combobox" id="order-dialog-symbol">
<option value="USDCAD">USDCAD, US Dollar vs Canadian Dollar</option>
底部会起作用
fast_multiselect(driver, 'order-dialog-symbol', ["USDCAD"])
如果你换了
select.select_by_visible_text(label)
和
select.select_by_value(label)
推荐阅读
- java - 为 dialogView 膨胀视图时出现 NullPointerException
- python-3.x - Python 'NoneType' 对象不可下标
- javascript - 如何使列大小调整器在 React 中工作
- r - 转换日期时间字符串并按日期排序
- angular - localStorage 未在 Angular 4 中定义
- ruby - 顶级方法中“self”的规则是什么?
- javascript - javascript 以编程方式构建对递归对象键的引用
- xslt-1.0 - 如何仅转换特定属性值
- html - 调整浏览器 CSS 大小时内容超出比例
- php - 如何在 woocommerce 中的产品标题下方添加交货估算?