1说明
页面登录之后点击菜单,div中的页面局部刷新,跳转到新的页面,然后登录后的页面无法定位新页面节点
2 解决办法
点击事件之前先获取新页面的地址
getUrl(“http://192.168.20.112:8092/page/term/meter_register_list.html”)
3 上代码
import time
from telnetlib import EC
from selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.chrome.service import Service
# 创建 WebDriver 对象,指明使用chrome浏览器驱动
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
# 加载谷歌浏览器驱动
wd = webdriver.Chrome(service=Service(r'F:\work\python\python_location2\chromedriver.exe'))
# 调用WebDriver 对象的get方法 可以让浏览器打开指定网址
def getUrl(url):
wd.get(url)
# 等5秒
time.sleep(5)
# 全屏显示
wd.maximize_window()
# 定义输入框的函数
def input_text(location_type, value, text):
wd.find_element(by=location_type, value=value).send_keys(text)
# 定义点击按钮的函数
def button_click(location_type, value):
time.sleep(3)
wd.find_element(by=location_type, value=value).click()
time.sleep(3)
# 获取并设置断言
def assert_success(location_type, value, result):
login_success = wd.find_element(by=location_type, value=value).text
print(login_success)
assert result in login_success
# 函数的调用
# 输入登录页面网址:
getUrl('http://192.168.20.112:8092')
# 输入账号
input_text(By.NAME, 'userName', 'delete')
# 输入密码
input_text(By.ID, 'password', '456789')
# 输入验证码
input_text(By.XPATH, '/html/body/div[1]/div/div/div[2]/div/div/div/div/div[1]/div/form/div[3]/div[1]/input', '111')
# 点击登录按钮
button_click(By.XPATH, '/html/body/div[1]/div/div/div[2]/div/div/div/div/div[1]/div/form/div[4]/button')
# 登录成功后的断言验证
assert_success(By.XPATH, '/html/body/div[1]/ul[2]/li[3]/a/div', 'delete1')
# 关闭页面
# wd.quit()
# 进入抄表页面点击终端信息按钮
button_click(By.XPATH, '/html/body/div[2]/div/ul/li[1]/a')
# 进入终端信息点击终端管理按钮
button_click(By.XPATH, '/html/body/div[2]/div/ul/li[1]/ul[1]/li/a/cite')
# 进入终端管理点击新增按钮
# wd.find_element(By.XPATH, '/html/body/div[2]/form/blockquote/div/div[7]/a').send_keys(Keys.ENTER)
# WebDriverWait(wd, 3).until(EC.element_to_be_clickable((By.XPATH,"//*[@id='addTerm']"))).click()
getUrl("http://192.168.20.112:8092/page/term/meter_register_list.html")
wd.find_element(By.CSS_SELECTOR, '#addTerm').click()