gpt4 book ai didi

python - 使用 selenium 和 python 从 optgroup 中选择一个选项

转载 作者:行者123 更新时间:2023-12-01 09:27:52 25 4
gpt4 key购买 nike

我想从这个 optgroup 中选择一个值,然后它应该给我一个链接下拉列表。

<div class="searchbar">
<select id="q" multiple="" tabindex="-1" class="select2-hidden-accessible" aria-hidden="true">
<option></option>
<option class="q-all-text" value="al:all">Search all text</option>

<optgroup label="Business Type">
<option value="bt:Buyer">Buyer</option>
<option value="bt:Farmer/Rancher">Farmer/Rancher</option>
<option value="bt:Farmers Market">Farmers Market</option>
<option value="bt:Fishery">Fishery</option>
<option value="bt:Food Bank">Food Bank</option>
</optgroup>

这是迄今为止我的代码:

driver = webdriver.Chrome('/path/to/chromedriver')
driver.get("https://foodmarketmaker.com/main/mmsearch")
iframe = driver.find_element_by_tag_name("iframe")
driver.switch_to.frame(iframe)

select = Select(driver.find_element_by_class_name("select2-hidden- accessible"))
select.select_by_value("bt:Farmer/Rancher")
links = driver.find_elements_by_tag_name('a')
print(links)
for link in links:
print(link.get_attribute('href'))

我要么得到一个元素不存在的异常,要么当我通过索引访问时,由于 aria-hidden 属性为 true,我得到一个 ElementNotVisibleException。有什么办法可以解决这个问题吗?

最佳答案

select 不是您需要处理的节点,因为它不可见。

尝试以下代码以获得所需的输出:

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


driver = web.Chrome('/path/to/chromedriver')
driver.get("https://foodmarketmaker.com/main/mmsearch")
iframe = driver.find_element_by_tag_name("iframe")
driver.switch_to.frame(iframe)

wait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//section[@id="search-right"]//input[@placeholder="start typing to search"]'))).click()
wait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//li[.="Bass"]'))).click()

links = wait(driver, 10).until(EC.presence_of_all_elements_located((By.XPATH, '//section[@id="search-results"]//a[.//*[name()="svg"]]')))

for link in links:
print(link.get_attribute('href'))

附注您需要将 '//li[.="Bass"]' XPath 中 li 节点的文本值替换为所需选项

关于python - 使用 selenium 和 python 从 optgroup 中选择一个选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50218124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com