删除线格式 背景:模拟弹窗类型授权网站登录,然后输入关键词进行查询的交互操作
-
如图:
-
原因:
- 弹窗不方便确认element代码元素位置,难以获取相关元素进行操作。
-
解决办法01
- 核心代码:
browser.get("http://username:password@rpc-admin.middleware.k2.test.xxxxx.info/")
- 说明:将登陆的用户名和密码按照上面的路径进行放置,就可以正常访问该页面。
- 详细代码:
- 此处是根据关键词获取dubbo接口的ip和port信息代码(仅供参考 用户名和密码均为admin)
# 调用谷歌浏览器驱动并创建对象 browser = webdriver.Chrome(executable_path="/Users/mac/projectsfiles/driver/chromedriver") # 打开浏览器 模拟浏览器请求页面 browser.get("http://admin:admin@rpc-admin.middleware.k2.test.xxxxx.info/") # 睡眠0.5秒 sleep(0.5) # 获取页面的标题 print(browser.title) # 获取页面的源码信息 # print(browser.page_source) # 保存页面快照 browser.save_screenshot('images/admin-index.png') # 找到输入框并输入自定义关键词(interface) browser.find_element_by_xpath('//*[@id="searchContent"]').send_keys(interface) # 找到查询按钮并模拟点击事件 browser.find_element_by_xpath('//*[@id="con_one_1"]/div[2]/a/img').click() # print(browser.page_source) browser.save_screenshot('images/admin-result.png') # 找到ip和port address = browser.find_element_by_xpath('//*[@id="table_o"]/tbody/tr[2]/td[2]/a').text print(address) if address == None: return "project or branch has been switched!" else: list = address.split(":") print("the ip and port are:" + list[0], list[1]) return list
-
解决办法02
- 一般这种类型的登录成功后都会生成一个Authorization字段的授权码,如图:
- 如果账号、密码以及生成的Authorization字段不变的情况下,可以将这关键信息放到headers里面,然后通过requests.get(url, headers=headers)进行请求即可,也可以实现上述功能。
- 详细代码(不做详细解释):
- 一般这种类型的登录成功后都会生成一个Authorization字段的授权码,如图:
url = "http://rpc-admin.middleware.k2.test.xxxxx.info/governance/services/%s/providers"%interface
headers = {
'Authorization': "Basic Z3Vlc3Q6Z3Vlc3Q=",
'Accept': "*/*",
'Accept-Language': "zh-CN,zh;q=0.9",
'Cache-Control': "max-age=0",
'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36",
# 'Connection': "Keep-Alive", #Connection:close 请求完自动断开
# 'Keep-Alive': "timeout=20", # 30s后自动关闭
'Connection': 'close',
'Cookies': "currentCellId=center",
'Postman-Token': "0b2ab32e-a921-4641-95bb-65775d50b95c,6ae56e9c-d9fc-4be7-87f4-a2701613d8e3",
'Host': "rpc-admin.middleware.k2.test.xxxxx.info",
'Accept-Encoding': "gzip, deflate",
'Cookie': 'currentCellId=center',
'cache-control': "no-cache"
}
html = requests.get(url, headers=headers)
print(html)
Soup = BeautifulSoup(html, 'lxml') # file本身是一个HTTPResponse类型的对象,通过调用它的read属性返回网页内容
content = Soup.select('#table_o a') # 定位class
res = ''
try:
print(content[0].text)
address = (content[0].text) #如果使用unicode直接split会有u''格式
list = address.split(':')
print(content[0].text, list[0], list[1])
return {"list": list, "code": 0}
~如果有参考价值 记得给好评哦~