在python中使用硒循环遍历下拉列表

时间:2019-03-26 17:49:00

标签: python selenium web-crawler

我正在尝试模拟在线数据工具上的多个选项的点击,最后以给定过滤器的条件下载Excel工作表。

我目前正在使用硒并识别xpath。

我能够完成一次迭代并获得一张excel工作表,但是我需要对下拉选项的每个可能排列进行此操作。手工完成是不现实的,因为有成千上万种选择。

上下文网站:https://data.cms.gov/mapping-medicare-disparities

有人知道可以在硒中起作用的功能吗?

我当前的策略是使用xpath创建列表,然后尝试执行置换功能以获取所有组合。但是,这没有用,因为函数:b.find_element_by_xpath一次仅允许一个xpath。

列表示例:

地理县/州

G1 ='//选择[@ id =“地理”] //选项[@ value =“ c”]' G2 ='//选择[@ id =“地理”] //选项[@ value =“ s”]'

地理位置= [G1,G2]

创建组合池

导入itertools 从itertools进口产品

产品中的烫发(地理位置,调整,分析,领域):     打印(烫发)

使用硒的实际代码

ajax()

代码以点击弹出窗口

**from** selenium **import** webdriver
**from** selenium.webdriver.common.keys **import** Keys
b = webdriver.Firefox()

尝试使用xpath一次选择所有选项的代码

pop_up = b.find_element_by_xpath('/html/body/div[1]/button')
pop_up.click()

错误消息:InvalidArgumentException:消息:无效类型:序列,应在第1行第28列输入一个字符串

这是因为find_element_by_xpath(我假设)一次只会看到1个xpath。

1 个答案:

答案 0 :(得分:1)

您在代码中尝试使用xpath的语法... 仍然是错误的,但是您可以将所有xpath放在列表中并遍历它。

xpathlist=['//select[@id="geography"]//option[@value="c"]', '//select[@id="adjust"]//option[@value="1"]',.....]

for xp in xpathlist:
    b.find_element_by_xpath(xp)
    #then add code to click or download or whatever