1.下载chromedriverhttp://npm.taobao.org/mirrors...你需要根据当前的chrome版本(chrome://version/)下载对应的驱动,将下载的驱动放在你的下面代码中python安装根目录简单实现了百度首页的一个搜索功能fromseleniumimportwebdriveimporttimedriver=webdriver.Chrome()driver.get("http://www.baidu.com")driver.find_element_by_id('kw')。send_keys('mytest')driver.find_element_by_id('su').submit()time.sleep(20)driver.close()2.搜索元素find_element_by_name方法返回第一个匹配name属性值的Elementfind_element_by_xpath最常用的方法3、unittest中的setUp和tearDown方法优化方案setUp()和tearDown()方法为每个测试方法创建一个实例,并在每个test__方法执行完后关闭实例。这会大大影响测试效率,如何让每个测试方法共享一个浏览器实例。由于在我测试的系统中,每个测试用例都会重新创建一个浏览器实例,每次都需要重复输入账号密码,所以我们使用setUpClass()方法和tearDownClass()方法以及@classmethod标签来代替setUp和拆解。这两个方法允许我们在类级别初始化数据而不是方法级别的初始化,这样每个测试方法都可以共享这些初始化数据@classmethoddefsetUpClass(self):self.driver=webdriver.Chrome()self.driver.implicitly_wait(30)self.driver.maximize_window()self.driver.get("xxxxx")self.driver.find_element_by_xpath('//*[@id="用户名"]').send_keys('xxxx')self.driver.find_element_by_xpath('//*[@id="password-email"]').send_keys('xxxx')self.driver.find_element_by_id('emailLogin').click()@classmethoddeftearDownClass(self):自.driver.quit()4.如何运行多个测试集?我们有两个测试用例集Mytest和Mytest1,需要添加到一个测试套件中,需要使用TestSuite、TestLoader和TextTestRunnerfromtestimportMyTestfromtest1importMyTest1importunittestmytest=unittest.TestLoader().loadTestsFromTestCase(MyTest)mytest1=unittest.TestLoader().loadTestsFromTestCase(MyTest1)smoketest=unittest.TestSuite([mytest,mytest1])unittest.TextTestRunner(verbosity=2).run(smoketest)五、如何生成好看的测试报告测试报告原生的HtmlTestRunner生成的在视觉上并不是那么好看,那么我们如何生成一个好看的测试报告呢。可以搜索WaiYipTung写的HtmlTestRunner,可以看到生成的测试报告漂亮多了。6、下拉框如何处理?对于如下图的下拉框,先定位下拉按钮并点击,再定位并点击选中的选项。
7.如何使用SeleniumStandaloneServer在远程机器上测试,下载地址https://www.selenium.dev/down...注意安装相应版本的jre,否则会出现unsupportedmajor.minorversion的错误信息52.0(52.0提示安装jre1.8)把chromedriver放到要控制的远程机器的python根目录下,在远程机器上运行如下命令后`java-Dwebdriver.chrome.driver="C:SeDriverschromedriver.exe"-jarselenium-server-standalone-2.41.0.jar`,在本地机器上添加如下代码,开始远程测试desired_caps={}desired_caps['platform']='WINDOWS'desired_caps['browserName']='chrome'self.driver=webdriver.Remote('http://remoteip+port/wd/hub',desired_caps)8、如何分布式运行你的测试,在多个不同的浏览器+操作系统中运行测试用例?大致结构:首先:先选择一台机器A作为hub,运行命令java-jarselenium-server-standalone-2.25.0.jar-rolehub,这个过程中出现错误port4444isbusy,执行以下命令检查它是什么它占用端口4444(在Windows下)。发现之前启动的standalone并没有结束,所以我们杀掉它,然后重启。netstat-ano|findstr"4444"tasklist|findstr"processnumberof4444"taskkill/pid{7888}/Fsecond:那么我们可以选择多个不同的系统+浏览器作为节点之前我们以A为中心,A的实际系统是windows,所以我们可以选择A上的不同端口作为测试节点,选择B(MAC+firefox)作为另一个节点java-Dwebdriver.chrome.driver="chromedriver.exe"-jarselenium-server-standalone.jar-rolewebdriver-browser"browserName=chrome,version=83,maxinstance=2,platform=WINDOWS"-hubHost172.18.4.170-port5555third:hub和node都配置好后,我们在之前的本机local添加如下代码if__name__=='__main__': iflen(sys.argv)>1: SearchProducts.BROWSER=sys.argv.pop() SearchProducts.PLATFORM=sys.argv。pop() unittest.main()可以在命令行选择对应的操作系统和浏览器节点来运行测试用例python你的自动化代码.pyWINDOWSchrome当然我们也可以使用云环境作为我们的测试hubandnode:SauceLabs和BrowserStack9,移动端如何使用seleniumios和android:如果要在iPhone或iPad上运行iOS测试,需要在MacOSX系统的机器上安装Appium。如果您正在测试Android应用程序,则需要在装有Windows或Linux系统的机器上安装Appium。ios执行过程:由于我这里没有mac机,所以就不做测试操作android执行过程了。Appium对Android应用程序的测试是通过调用AndroidSDK内置的UIAutomator来实现的。该过程与基于iOS平台的测试非常相似。Appium作为一个HTTPServer,通过JSONWireProtocol接收测试脚本传输的指令。Appium将这些命令发送到UIAutomator。这样,这些指令就可以在仿真器或真机上进行测试,并启动被测应用程序。在此过程中,Appium将JSON命令翻译成UIAutomator可以理解的Java命令。这个过程如下图所示。参考链接:https://www.cnblogs.com/smyy/...androidsdk下载地址:http://www.androiddevtools.cn/pipinstallAppium-Python-Clientappium下载地址:https://bitbucket.org/appium/appium.app/downloads/16持续学习和更新...