【发布时间】:2018-05-07 15:55:02
【问题描述】:
我想从这个 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 属性为真,我得到一个 ElementNotVisibleException。有没有办法解决这个问题?
【问题讨论】:
-
您可以模拟一些动作,例如悬停或单击某处使您的元素可见,然后选择该元素。如果它在一段时间内可见,则使用显式等待。或者您打算以任何方式选择该元素,然后使用 JavaScript 执行器将该 aria-hidden 更改为 false 并选择相同的
标签: python selenium web-crawler