【发布时间】:2016-03-09 21:07:39
【问题描述】:
在网页抓取和浏览器自动化方面我有点新意,所以非常感谢您的帮助!
我使用 Python 的 Selenium 包的目标是:
- 转到http://www.mcmaster.com/#orders/
- 使用侧面的用户名和密码登录
- 在快速订购功能中填写我的订单
问题是我使用以下代码为#2 的每个登录字段确定了 xpath:
def orderMcMasterParts():
# Open each of the websites required
mcmBrowser = webdriver.Firefox()
mcmBrowser.get('http://www.mcmaster.com/#orders/')
# Log in with my credentials
usernameElem = mcmBrowser.find_element_by_xpath("//input[@class='LoginWebPartLayout_InpBx' and @type='text']")
usernameElem.send_keys(mcmUsername)
passwordElem = mcmBrowser.find_element_by_xpath("//input[@class='LoginWebPartLayout_InpBx' and @type='password')
passwordElem.send_keys(mcmPassword)
passwordElem.submit()
但我继续收到 NoSuchElementException。当我使用请求模块下载该页面上的 HTML 时,我发现这些字段都没有出现在 HTML 代码中。它们似乎以 Javascript sn-ps 的形式存在。
我的问题是如何在这些字段中进行交互和输入?
【问题讨论】:
-
一些可能有帮助的更多信息:当我右键单击 Firefox 中的用户名字段并选择“检查元素”时,我会得到带有类“csstransitions gr__mcmaster_com”的 HTML 但是如果我右键单击页面并选择“查看页面源代码”,我得到以 class="" 开头的 HTML。
-
javascript代码是否自动执行?如果没有,那么你应该触发它执行,等待几秒钟,然后尝试获取输入。
-
检查this answer,它会告诉你如何等待某个元素可用。
标签: javascript python selenium selenium-webdriver