[英]Clicking on the correct option from a given list of options in Selenium (Python)
我正在尝试向“我拥有的货币”文本框提供输入。 此输入在变量“货币”中。 在我在文本框中输入后,它会显示许多选项。 我想对我输入的 3 个字母的货币代码和下拉菜单中显示的选项进行不区分大小写的匹配,select 是正确的。 我正在测试的页面: https://www.oanda.com/fx-for-business/historical-rates
currency = currency_list.loc[i,'currency']
print(f'\nFETCHING DATA FOR : {currency}')
df=pd.DataFrame()
#input our currency in "currency I have" text-box
WebDriverWait(driver, 2).until(EC.presence_of_element_located((By.CSS_SELECTOR,'#havePicker > div'))).click()
currency_have = WebDriverWait(driver, 2).until(EC.presence_of_element_located((By.CSS_SELECTOR,'#havePicker > div > input')))
try:
currency_have.clear()
except:
pass
currency_have.send_keys(currency)
options = WebDriverWait(driver, 2).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,'#havePicker > div > ul li')))
div_tags = [li_tags.find_elements_by_tag_name('div') for li_tags in options]
for div_tag in div_tags:
test = div_tag[1]
if (test.text.casefold()) == (currency.casefold()):
return test
else:
continue
我的代码中的 return 语句不正确。 我如何进一步实现我的目标?
请,任何帮助将不胜感激。 我是 selenium 的新手。
为了等待下拉结果,您的操作顺序应如下所示:
这部分代码应如下所示:
wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#havePicker > div'))).click()
currency_have = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, '#havePicker > div > input')))
currency_have.clear()
currency_have.click()
options = WebDriverWait(driver, 10).until(
EC.presence_of_all_elements_located((By.CSS_SELECTOR, '#havePicker > div > ul li')))
currency_have.send_keys("Australian dollar")
请注意,您在AUD
上有两个结果。 这就是我使用完整货币名称的原因。 如果您只想使用 aud,请使用split()
在这里查看如何使用它如何在两个标记之间提取 substring? 然后改进你的 for 循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.