怎么用python驱动马达(python selenium中文文档-入门)python初学 / python测试驱动开发入门...

wufei123 发布于 2024-05-13 阅读(33)

2. 入门2.1. 简单用法如果你已经安装了Selenium Python库,你可以像这样从Python开始使用它from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Firefox() driver.get("http://www.python.org") assert "Python" in driver.title elem = driver.find_element_by_name("q") elem.clear() elem.send_keys("pycon") elem.send_keys(Keys.RETURN) assert "No results found." not in driver.page_source driver.close() 。

上面的脚本可以保存到文件中(例如: - python_org_search.py),然后就可以像这样运行:python python_org_search.py 在运行前应该先安装 python selenium库

2.2. 示例说明selenium.webdriver模块提供了所有WebDriver实现 目前支持的WebDriver实现是Firefox,Chrome,IE和Remote Keys类提供键盘中的键,如RETURN,F1,ALT等。

from selenium import webdriver from selenium.webdriver.common.keys import Keys 接下来,创建一个 Firefox WebDriver .实例

driver = webdriver.Firefox() driver.get方法将导航到URL给出的页面 在将控件返回到测试或脚本之前,WebDriver将等待页面完全加载(即“onload”事件已触发)。

值得注意的是,如果你的页面在加载时使用了大量的AJAX,那么WebDriver可能不知道它何时完全加载:driver.get("http://www.python.org") --- 加载URL页面

下一行是断言,确认标题中有“Python”字样:assert "Python" in driver.title WebDriver提供了许多使用其中一个find_element_by_ *方法查找元素的方法。

例如,可以使用find_element_by_name方法通过其name属性定位输入文本元素 有关查找元素的详细说明,请参阅“定位元素”一章:elem = driver.find_element_by_name("q")

接下来,我们发送指令,这类似于使用键盘输入指令 可以使用从selenium.webdriver.common.keys导入的Keys类发送特殊键 为安全起见,我们首先清除输入字段中的任何预先填充的文本(例如“搜索”),这样就不会影响我们的搜索结果:。

elem.clear() elem.send_keys("pycon") -- 键入“pycon” elem.send_keys(Keys.RETURN) -- 回车键 提交页面后,如果有响应内容,就会得到对应内容。

为确保找到对应的响应内容,使用assert断言assert "No results found." not in driver.page_source 最后,关闭浏览器窗口 也可以调用quit方法而不是关闭。

quit将退出整个浏览器,而close`将关闭一个选项卡,但如果只打开一个选项卡,默认情况下大多数浏览器将完全退出:driver.close() 2.3. 使用Selenium编写测试Selenium主要用于编写测试用例。

selenium包本身不提供测试工具/框架 您可以使用Python的unittest模块编写测试用例 其他工具/框架的选项是py.test和nose在本章中,我们使用unittest框架 这是使用unittest模块的修改示例。

这是对python.org搜索功能的测试:import unittest from selenium import webdriver from selenium.webdriver.common.keys import Keys class PythonOrgSearch(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() def test_search_in_python_org(self): driver = self.driver driver.get("http://www.python.org") self.assertIn("Python", driver.title) elem = driver.find_element_by_name("q") elem.send_keys("pycon") elem.send_keys(Keys.RETURN) assert "No results found." not in driver.page_source def tearDown(self): self.driver.close() if __name__ == "__main__": unittest.main()

你可以在shell中运行上面的testcase.python test_python_org_search.py . ---------------------------------------------------------------------- Ran 1 test in 15.566s OK

以上结果表明测试已成功完成2.4. 解释一下这个例子最初,导入所需的所有基本模块 unittest模块是基于Java的JUnit的内置Python 该模块提供了测试用例的框架 selenium.webdriver模块提供了所有WebDriver实现。

目前支持的WebDriver实现是Firefox,Chrome,Ie和Remote Keys类提供键盘中的键,如RETURN,F1,ALT等import unittest from selenium import webdriver from selenium.webdriver.common.keys import Keys

测试用例类PythonOrgSearch继承自unittest.TestCaseclass PythonOrgSearch(unittest.TestCase): setUp是初始化的一部分,这个方法将在你要在这个测试用例类中编写的每个测试函数之前调用。

在这里,您将创建Firefox WebDriver的实例 --- 类似于初始化def setUp(self): self.driver = webdriver.Firefox() 这是测试用例方法。

测试用例方法应始终以字符test开始 此方法中的第一行创建对setUp方法中创建的驱动程序对象driver的本地引用def test_search_in_python_org(self): driver = self.driver

driver.get方法将导航到URL给出的页面 在控制权返回到测试或脚本之前,WebDriver将等待页面完全加载(即“onload”事件已触发) 值得注意的是,如果你的页面在加载时使用了大量的AJAX,那么WebDriver可能不知道它何时完全加载:。

driver.get("http://www.python.org") 下一行是断言,确认标题中有“Python”字样:self.assertIn("Python", driver.title) WebDriver提供了许多使用其中一个find_element_by_ *方法查找元素的方法。

例如,可以使用find_element_by_name方法通过其name属性定位输入文本元素 有关查找元素的详细说明,请参阅“定位元素”一章:elem = driver.find_element_by_name("q")

接下来,我们发送键盘按钮,这类似于使用键盘输入按键 可以使用从selenium.webdriver.common.keys导入的Keys类发送特殊键:elem.send_keys("pycon") elem.send_keys(Keys.RETURN) 。

提交页面后,如果有响应内容的话, 为确保找到一些结果,使用断言:assert "No results found." not in driver.page_source 每个测试方法后都会调用tearDown方法。

这是一个执行所有清理操作的地方 在当前方法中,浏览器窗口关闭 您也可以调用quit方法而不是close 退出将退出整个浏览器,而close将关闭一个选项卡,但如果它是唯一打开的选项卡,默认情况下大多数浏览器将完全退出:。

def tearDown(self): self.driver.close() 最后一行是运行测试套件的一些样板代码: if __name__ == "__main__": unittest.main()

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

河南中青旅行社综合资讯 奇遇综合资讯 盛世蓟州综合资讯 综合资讯 游戏百科综合资讯 新闻23791