好吧,我很困惑。所以我想使用 Selenium Webdriver 和 Python 抓取一个页面。我在 Selenium IDE 中记录了一个测试用例。它有类似
的东西Command Taget
click link=14
但我不知道如何在 Python 中运行它。理想的最终结果是我拥有最后一页的来源。
是否有 run_test_case 命令?还是我必须编写单独的命令行?我宁愿错过测试用例和实际自动化之间的联系。每个站点都告诉我如何加载初始页面以及如何从该页面获取内容,但我如何输入值并单击内容并获取源代码?
我见过:
submitButton=driver.find_element_by_xpath("....")
submitButton.click()
好的。并输入值?并在我提交页面后获取源代码?很抱歉,这太笼统了,但我真的环顾四周,没有找到一个好的教程来实际向我展示如何做我认为是 Selenium Webdriver 的全部要点。
请您参考如下方法:
我从未使用过 IDE。我只是手工编写测试或站点自动化。
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://www.google.com")
print browser.page_source
你可以把它放在一个脚本中然后执行 python wd_script.py 或者你可以打开一个 Python shell 并手动输入它,观察浏览器打开,观察它被每行。为此,您显然还需要安装 Firefox。并非所有版本的 Firefox 都适用于所有版本的 Selenium。每个的当前最新版本(Firefox 19,Selenium 2.31)都可以。
显示登录表单的示例可能如下所示:
username_field = browser.find_element_by_css_selector("input[type=text]")
username_field.send_keys("my_username")
password_field = browser.find_element_by_css_selector("input[type=password]")
password_field.send_keys("sekretz")
browser.find_element_by_css_selector("input[type=submit]").click()
print browser.page_source
如果你对css很了解的话,这种东西写起来就容易多了。尝试查找在 JavaScript 中生成的元素可能会导致奇怪的错误。例如,您可能会在它们存在之前寻找它们。通过输入 time.sleep 一段时间并查看是否可以解决问题,很容易判断是否属于这种情况。更优雅的是,您可以抽象出某种通用的等待元素函数。
如果您想将 Webdriver session 作为集成测试套件的一部分运行,那么我建议使用 Python 的单元测试来创建它们。您将浏览器驱动到被测站点,并断言您正在执行的操作使页面处于您期望的状态。如果您有兴趣,我可以分享一些例子,说明它如何运作。
