【发布时间】:2018-10-26 10:58:58
【问题描述】:
我在 Chrome 上使用selenium webdriver; python 3 在 Windows 10 上。
我想从数据库中抓取一些报告。我使用公司 ID 和年份进行搜索,结果是以特定方式格式化的链接列表:类似于year_companyID_seeminglyRandomDateAndDoctype.extension,例如2018_2330_20020713F04.pdf。我想获取某种文档类型的所有 pdf。我可以使用webdriver.find_elements_by_partial_link_text('F04') 获取某个文档类型的所有链接,或者使用'.pdf' 而不是'F04' 获取所有扩展名,但我无法找到同时检查两者的方法。首先我尝试了类似
links = webdriver.find_elements_by_partial_link_text('F04')
for l in links:
if l.find('.pdf') == -1:
continue
else:
#do some stuff
但不幸的是,链接是 WebElements:
print(links[0])
>> <selenium.webdriver.remote.webelement.WebElement (session="78494f3527260607202e68f6d93668fe", element="0.8703868381417961-1")>
print(links[0].get_attribute('href'))
>> javascript:readfile2("F","2330","2015_2330_20160607F04.pdf")
所以上面for 循环中的条件失败了。
我发现无论该对象是什么,我都可以访问必要的信息,但我更愿意在获取链接时先进行检查。 有没有办法检查webdriver.find_elements_by_* 方法中的多个条件?
【问题讨论】:
-
您确定
links = webdriver.find_elements_by_partial_link_text('F04')返回的不是WebElement 列表,而是javascript 对象?你的意思是print(links[0].get_attribute('href'))还是print(links[0].text)? -
抱歉,我把它和我之前尝试使用的另一种方法混为一谈 - 已修复。
标签: python-3.x google-chrome selenium-webdriver