微信网站制作平台,网站推广的方法有哪些?,婚纱网站开发的必要性,使用element做的网站前段时间做ui自动化测试的时候#xff0c;导航栏菜单始终有点问题#xff0c;最后只好直接获取到url#xff0c;然后直接使用driver.get(url)进入页面#xff1b;包括做压测的时候#xff0c;比如我要找出所有报表菜单的url#xff0c;这样不可能手动去一个一个找出来导航栏菜单始终有点问题最后只好直接获取到url然后直接使用driver.get(url)进入页面包括做压测的时候比如我要找出所有报表菜单的url这样不可能手动去一个一个找出来然后复制这样浪费时间并且也容易漏掉所以我就写了个脚本来干这事首先说下思路登录--获取所有的a标签--筛选掉不用的标签--打印或者保存到文件中其中我获取页面所有的标签使用了两种方法webdriver和beautifulsoup4两种的区别1、beautifulsoup4来解析的时候比较稳定并且速度快2、webdriver可能简单一点吧我推荐是用beautifulsoup4之所以是用webdriver登录是因为用webdriver登录简单不像requests来请求的话第一次还要分析url参数之类的用webdriver的话只需要定位几个元素就ok了何乐而不为呢。。。下面我将两种方式的运行时间、最终的解析结果下面的是第一种方式使用beautifulsoup4来解析1 #codingutf-823 4 是为了获取XXX系统菜单的url5 使用的是selenium登录获取网页的内容然后用beautifulsoup来解析6 7 import unittest8 import time9 from selenium import webdriver10 from bs4 import BeautifulSoup1112 # 登录url13 url http://XXXX.XXXX.com/ # 系统的url14 username XXXX15 password XXXXX1617 class GetUrl(unittest.TestCase):18 def setUp(self):19 self.dr webdriver.Chrome()20 self.dr.get(url)2122 def tearDown(self):23 self.dr.quit()2425 def _login(self):26 self.dr.find_element_by_id(username).send_keys(username) # 输入用户名27 self.dr.find_element_by_id(password).send_keys(password) # 输入密码28 # self.dr.find_element_by_id(verifycode).send_keys(XXXXX) 这里原来是需要验证码的后来取消掉了29 self.dr.find_element_by_id(weblogin).click() # 点击登录按钮30 time.sleep(3)3132 def _gethtmlcontent(self):33 获取当前页面的html的所有内容34 content self.dr.page_source # 将该页面的内容 返回给content保存起来方便后面解析35 return content3637 def _geturl(self,pagesource):38 39 找出所有的a标签然后筛选掉非导航连接的a标签。返回的是一个dict40 41 result dict()42 soup BeautifulSoup(pagesource, lxml)43 eles soup.find_all(a)44 flag 045 for ele in eles:46 if # in ele[href]:47 continue48 tmp ele.string49 if tmp is not None and not in tmp:50 flag 151 ele_url ele[href].split(?)[0]52 # print({0} {1}.format(tmp,ele_url))53 result[tmp] ele_url5455 # print(Find out {0} datas..format(len(result)))56 return result5758 def _writetotxt(self,contents):59 60 将结果写入文件中61 62 print(写入开始)63 with open(urlcontent.txt,w) as f:64 for title,value in contents.items():65 f.write({0} {1}\n.format(title,value))66 print(写入完毕)6768 def test_run(self):69 self._login()70 pagesources self._gethtmlcontent()71 result self._geturl(pagesources)72 self._writetotxt(result)737475 if __name__ __main__:76 unittest.main()第二种全都是使用webdriver来解析的1 #codingutf-823 4 是为了获取XXX系统菜单的url5 使用的是selenium登录查找元素获取元素的属性6 7 from selenium import webdriver8 import unittest9 import time1011 # 登录url12 url http://XXX.XXX.com/13 username XXX14 password XXX1516 class GetUrl(unittest.TestCase):17 def setUp(self):18 self.dr webdriver.Chrome()19 self.dr.get(url)2021 def tearDown(self):22 self.dr.quit()2324 def _login(self):25 # time.sleep(2)26 self.dr.find_element_by_id(username).send_keys(username)27 self.dr.find_element_by_id(password).send_keys(password)28 # self.dr.find_element_by_id(verifycode).send_keys(XXXXX)29 self.dr.find_element_by_id(weblogin).click()30 time.sleep(3)3132 def _geturl(self):# 这里返回的是一个list然后里面是一个个字典33 result list()34 eles self.dr.find_elements_by_css_selector(menu.u-menu a)35 for ele in eles:36 tmp dict()37 href ele.get_attribute(href).split(?)[0]38 # 获取菜单 的名称39 name ele.get_attribute(innerHTML)40 if not in name:41 tmp[name] name.strip()42 tmp[href] href43 result.append(tmp)44 # print(name: {0},href: {1}.format(name,href))45 return result4647 def _writetotxt(self,contents):48 print(一共{0}条数据.format(len(contents)))49 print(写入开始)50 with open(urlcontent.txt,w) as f:51 for content in contents:52 f.write({0} {1}\n.format(content[name],content[href]))53 print(写入完毕)5455 def test_run(self):56 self._login()57 self._writetotxt(self._geturl())585960 if __name__ __main__:61 unittest.main()好了就到这里吧。。。