2013-03-06 114 views
2

好的,我很困惑。所以我想用Selenium Webdriver和Python来刮一个页面。我在Selenium IDE中记录了一个测试用例。它有像Python的Selenium Webdriver:获取页面,输入值,点击提交,获取源代码

Command Taget 
click  link=14 

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

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

我看到:

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

确定。并输入值?一旦我提交了一个页面,获取源代码?对不起,这是如此普遍,但我真的环顾四周,并没有找到一个很好的教程,实际上告诉我如何做我认为是Selenium Webdriver的全部重点。

回答

1

我从来没有用过IDE。我只需手工编写测试或现场自动化。

from selenium import webdriver 

browser = webdriver.Firefox() 
browser.get("http://www.google.com") 
print browser.page_source 

你可以把在一个脚本,只是做python wd_script.py或者你可以打开一个Python的外壳和手工键入它,看浏览器中打开,看它得到由每行驱动。为了这个工作,你显然需要安装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来创建它们。您将浏览器驱动到正在测试的网站,并断言您正在执行的操作会使页面处于您期望的状态。如果你有兴趣,我可以分享一些如何工作的例子。