【发布时间】:2017-05-12 02:02:24
【问题描述】:
我正在尝试使用 Python 3.5 和 Selenium 选择出现在 HTML 页面上的所有复选框。最终目标显然是操纵它们,但我什至无法正确选择它们。
我不能只给你确切的 URL,因为它是 eBay 上的一个特殊页面,你需要连接才能看到它。所以,这里是访问我感兴趣的网页的方法:
- 转到https://signin.ebay.co.uk/ws/eBayISAPI.dll
- 创建帐户或登录
- 连接后转到http://cgi5.ebay.co.uk/ws/eBayISAPI.dll?SellHub3
- 输入“iPhone”或任何您想要的品牌,没关系,然后点击“开始销售”按钮。
- 您在页面上。
您可以看到,如果您输入“iPhone”,eBay 会建议您从以下所有类别中进行选择:
手机和通讯
手机和智能手机
手机和 PDA 配件 > 其他手机配件
其他手机
智能手表
手机和 PDA 配件 > 电缆和适配器
手机零件
手机和 PDA 配件 > 充电器和底座
手机和 PDA 配件 > 耳机
手机和 PDA 配件 > 保护套和保护套
批发和工作地段
其他批发和工作地段
我的目标是勾选第一个复选框,无论页面上有多少复选框。我只想检查第一个。就这么简单。在本例中,这意味着选中“移动和智能手机”复选框。
我试过XPATH方法:
checkBox = driver.find_elements_by_xpath(".//input[@type='checkbox']")
但是当我尝试 print(checkBox) 时,它返回 [ ] (=nothing)。这很奇怪,因为在 Firefox 中,这个 XPATH 正是我所需要的。
我也尝试用类名选择它:
checkBox = driver.find_elements_by_class_name('inpChkBox')
但是,当我尝试打印它时,它再次没有任何结果。
如何生成页面上所有复选框的列表,以便之后对其进行操作?
似乎所有复选框的 ID、名称等都是唯一的并且是自动生成的,所以我不能只通过它们的 ID、值或名称来选择它们。我需要能够检测页面中所有复选框并将它们放在列表中的东西。
感谢您的帮助
【问题讨论】:
-
在获取元素之前,您确定您在正确的
frame中吗? -
嗨,马克,谢谢您的回答。我是 Selenium 的新手,所以我不确定。如何确保它是正确的框架?
标签: javascript python selenium checkbox web-scraping