Python 如何在使用selenium键入后从数据列表中选择选项
我正在尝试使用selenium从datalist中选择一个选项。首先,从键发送选项名称,然后向下发送箭头以选择它。一切顺利,直到发送回车键,它不会采取任何行动。我必须按下并输入键,使提交按钮可点击,不能修改HTML代码Python 如何在使用selenium键入后从数据列表中选择选项,python,selenium-webdriver,xpath,css-selectors,webdriverwait,Python,Selenium Webdriver,Xpath,Css Selectors,Webdriverwait,我正在尝试使用selenium从datalist中选择一个选项。首先,从键发送选项名称,然后向下发送箭头以选择它。一切顺利,直到发送回车键,它不会采取任何行动。我必须按下并输入键,使提交按钮可点击,不能修改HTML代码 ... <input _ngcontent-njw-c0="" list="salesmans" placeholder="Selecciona Cliente o Vendedor" style="wi
...
<input _ngcontent-njw-c0="" list="salesmans" placeholder="Selecciona Cliente o Vendedor" style="width: 100%;border: none;">
<datalist _ngcontent-njw-c0="" id="salesmans">
<option _ngcontent-njw-c0="" value="Vendedor Venta" ng-reflect-value="Vendedor Venta"></option>
<option _ngcontent-njw-c0="" value="juan peña hjvgvghghc" ng-reflect-value="juan peña hjvgvghghc"></option>
...
我试过了
- 将全名发送到输入
- 一起发送和输入键
- 发送返回键
...
<input _ngcontent-njw-c0="" list="salesmans" placeholder="Selecciona Cliente o Vendedor" style="width: 100%;border: none;">
<datalist _ngcontent-njw-c0="" id="salesmans">
<option _ngcontent-njw-c0="" value="Vendedor Venta" ng-reflect-value="Vendedor Venta"></option>
<option _ngcontent-njw-c0="" value="juan peña hjvgvghghc" ng-reflect-value="juan peña hjvgvghghc"></option>
...
元素图像:
要从数据列表中选择选项,文本为卖方或文塔,使用而不是向下发送
,和键,因为所需元素是一个元素,请同时输入
键,单击需要归纳的元素,然后可以使用以下任一选项:
- 使用
CSS\u选择器
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[placeholder="Selecciona Cliente o Vendedor"]"))).send_keys(user_auth_data[2])
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "option[value='Vendedor Venta'][ng-reflect-value='Vendedor Venta']"))).click()
- 使用
XPATH
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@placeholder="Selecciona Cliente o Vendedor"]"))).send_keys(user_auth_data[2])
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//option[@value='Vendedor Venta' and @ng-reflect-value='Vendedor Venta']"))).click()
- 注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
您可以尝试以下选项
尝试将全名发送到输入,然后尝试先手动按下“回车”或“制表”按钮。(如果其中任何一项有效,那么您可以在输入全名后在代码中发送该密钥)
尝试将全名发送到输入,然后找到要选择的选项的XPath。另外请注意,一个选项(您要选择的)的XPath在发送完整名称后,可能会与原来的一次不同。所以请考虑一下。
我面临着一个类似的问题,第二个选项对我很有效,但是,我是用Python而不是Python实现的
谢谢
我尝试实现该解决方案,但收到错误消息:javascript错误:选项元素不在select中。为什么会这样?