2

好吧,我很困惑。所以我想使用 Selenium Webdriver 和 Python 抓取一个页面。我在 Selenium IDE 中记录了一个测试用例。它有类似的东西

Command    Taget
click      link=14

但我不知道如何在 Python 中运行它。理想的最终结果是我有最后一页的来源。

有 run_test_case 命令吗?还是我必须编写单独的命令行?我宁愿错过测试用例和实际自动化之间的联系。每个站点都告诉我如何加载初始页面以及如何从该页面获取内容,但是我如何输入值并单击内容并获取源?

我见过:

submitButton=driver.find_element_by_xpath("....")
submitButton.click()

好的。并输入值?并在我提交页面后获取源代码?很抱歉,这太笼统了,但我真的环顾四周,并没有找到一个好的教程,它实际上向我展示了如何做我认为是 Selenium Webdriver 的全部要点。

4

1 回答 1

1

我从来没有使用过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 会话作为集成测试套件的一部分运行,那么我建议您使用 Python 的 unittest 来创建它们。您将浏览器驱动到被测站点,并断言您正在执行的操作使页面处于您期望的状态。如果你有兴趣,我可以分享一些例子来说明它是如何工作的。

于 2013-03-06T09:27:26.033 回答