我是selenium的新手,它试图从站点(代码中的链接)获取select标签的值,但是每当我尝试获取select标签时,它都会返回一个空字段。
我的密码
from selenium import webdriver
from selenium.webdriver.support.ui import Select
driver = webdriver.Chrome('chromedriver',chrome_options=chrome_options)
url = 'https://lifeinsurance.adityabirlacapital.com/about-us/public-disclosure'
driver.get(url)
select = Select(driver.find_element_by_id("select-public-year"))
print([option.text for option in select.options])
# Output: ['']
当我查看页面源代码时,它显示了以下内容:
<select Name="selectPublicYear" class="demo-default select selectized selectPublicYear" id="select-public-year" name="SelectedYear">
<option value="2020-2021">2020-2021</option>
<option value="2019-2020">2019-2020</option>
<option value="2018-2019">2018-2019</option>
<option value="2017-2018">2017-2018</option>
<option value="2016-2017">2016-2017</option>
<option value="2015-2016">2015-2016</option>
<option value="2014-2015">2014-2015</option>
<option value="2013-2014">2013-2014</option>
<option value="2012-2013">2012-2013</option>
<option value="2011-2012">2011-2012</option>
<option value="2010-2011">2010-2011</option>
<option value="2009-2010">2009-2010</option>
<option value="2008-2009">2008-2009</option>
<option value="2007-2008">2007-2008</option>
<option value="2006-2007">2006-2007</option>
<option value="2005-2006">2005-2006</option>
</select>
任何提示或帮助将不胜感激。
该<select>
标签具有属性,style="display: none;"
所以这不是你想要的元素。
要从所有使用的Selenium和python中提取文本,例如2020-2021,您必须引入WebDriverWait,并且可以使用以下两种定位策略之一:<class="option">
visibility_of_all_elements_located()
使用CSS_SELECTOR
:
driver.get('https://lifeinsurance.adityabirlacapital.com/about-us/public-disclosure')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.selectize-input.items.full.has-options.has-items"))).click()
print([my_elem.text for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.selectize-dropdown-content div.option")))])
使用XPATH
:
driver.get('https://lifeinsurance.adityabirlacapital.com/about-us/public-disclosure')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='selectize-input items full has-options has-items']"))).click()
print([my_elem.text for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='selectize-dropdown-content']//div[contains(@class, 'option')]")))])
控制台输出:
['2020-2021', '2019-2020', '2018-2019', '2017-2018', '2016-2017', '2015-2016', '2014-2015', '2013-2014', '2012-2013', '2011-2012', '2010-2011', '2009-2010', '2008-2009', '2007-2008', '2006-2007', '2005-2006']
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句