Python Django-使用硒选择自动完成灯光选择

Python Django-使用硒选择自动完成灯光选择,python,django,selenium,testing,autocomplete,Python,Django,Selenium,Testing,Autocomplete,我一直在试图找出如何从为我的测试创建的下拉列表中选择选项 这些回应,似乎已经过时了 我还尝试了一个选择 我将代码归结为: self.selenium.find_elements_by_css_selector('.yourlabs autocomplete[data input id=“id_branch-autocomplete”][data value]) 其中id\u branch-autocomplete是输入数据的字段的名称。但是,它返回了一个空列表 有人在这方面取得了成功吗?我似乎找

我一直在试图找出如何从为我的测试创建的下拉列表中选择选项

这些回应,似乎已经过时了

我还尝试了一个选择

我将代码归结为:
self.selenium.find_elements_by_css_selector('.yourlabs autocomplete[data input id=“id_branch-autocomplete”][data value])

其中
id\u branch-autocomplete
是输入数据的字段的名称。但是,它返回了一个空列表


有人在这方面取得了成功吗?我似乎找不到出现在浏览器控制台中的元素,我对CSS的理解也不够透彻,无法从文件中推断出合适的选择器。

在最终解决这个问题之前,我放弃了这三次

Selenium需要等待名为
hilight
的类出现在页面上。只有这样,它才能尝试点击它

为此,我使用了从我之前的一个问题中得到的等待函数:

我将从一个适用于我的第一个领域的简单解决方案开始,因为它没有我的最终解决方案那么可怕

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

def wait_for_element(self, elm, by = 'id', timeout=10):
    wait = WebDriverWait(self.driver, timeout)
    wait.until(EC.presence_of_element_located((By.CLASS_NAME, elm)))
    return self.driver.find_element_by_class_name(elm)

wait_for_element(self, "highlight", "class").click()
其中,
driver
是用于运行测试的适当WebDriver。该类在我使用的版本的第245行的
autocomplete.js
中定义:

this.hilightClass='hilight'

然而,这很快就被证明是无效的,因为一行中有几个自动完成字段的表单会留下名为
highlight
的类,从而混淆webdriver。因此,我不得不使用xpath对其进行修改,这使其功能更加强大:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

def wait_for_element(self, elm, by = 'id', timeout=10):
    wait = WebDriverWait(self.driver, timeout)
    wait.until(EC.presence_of_element_located((By.XPATH, elm)))
    return self.driver.find_element_by_xpath(elm)
    wait_for_element(self,
                     "//span[@data-input-id='id_branch-autocomplete']/span[@data-value='1']",
                     "xpath").click()

id\u branch-autocomplete
应替换为任何字段的
id
,并且
@data value='x'
的数值可以是您想从下拉列表中选择的任何选项。第一个选项是
1
,第二个选项是
2
,依此类推。好极了

你能分享这个元素在DOM级别(html代码片段或页面链接)上的外观吗?不幸的是,这个网站不是实时的,而且我太新手了,无法从自动完成应用程序中提取相关代码。我在野外找一个例子。。