12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- import allure
- from selenium.webdriver.common.by import By
- from selenium.webdriver.support.wait import WebDriverWait
- from selenium.webdriver.support import expected_conditions as ec
- class WebKeys:
- # 浏览器 __init__ 初始化函数 只要实例化WebKeys 就会走到init里面打开浏览器
- # webdriver.chorme 外面创建
- def __init__(self,driver):
- self.driver=driver
- self.wait=WebDriverWait(self.driver, 10)
- # 访问不同的网址 函数传参
- @allure.step("访问")
- def open(self,url):
- self.driver.get(url)
- # 我不知道给哪个元素加边框 1 不能2
- def locator_station(self, element):
- self.driver.execute_script(
- "arguments[0].setAttribute('style',arguments[1]);",
- element,
- "border: 2px solid green;" # 边框,green绿色
- )
- # 元素定位 传两个参数 可以用显示等待定位元素
- # visibility_of_element_located 传元组 (By.id,xxx)
- # 显示等待+定位 找到元素之后 要返回出去
- # 为什么要返回出去 是因为后面要马上操作它 调用的时候 找到元素之后 才能进行点击进行输入
- # 找到元素之后有边框 加进来封装
- @allure.step("元素定位")
- def locator_with_wait(self,name,value):
- # self.driver.find_element(name,value).send_keys()
- # el=self.driver.find_element(name,value)
- # el.send_keys()
- locator=(name,value)
- el=self.wait.until(ec.visibility_of_element_located(locator))
- self.locator_station(el)
- return el
- @allure.step("多元素定位")
- def locators_with_wait(self, name, value):
- locator = (name, value)
- el = self.wait.until(ec.visibility_of_all_elements_located(locator))
- return el
- @allure.step("点击")
- def on_click(self,name,value):
- self.locator_with_wait(name, value).click()
- # 窗口切换 项目中基础操作 作家管理
- @allure.step("窗口切换")
- def change_window(self,n):
- # 获取所有的窗口 获取所有的句柄
- handles=self.driver.window_handles
- # 切换窗口 拿下标 到底拿哪个下标
- self.driver.switch_to.window(handles[n])
- # 文本断言 登陆的时候
- # locator = ("partial link text", "章节管理")
- # wait.until(ec.visibility_of_element_located(locator)).click()
- # 为什么写返回是因为我后面需要拿这个值进行断言 返回
- # 获得结果
- @allure.step("获得返回结果")
- def text_wait(self,name,value,txt):
- el=(name,value)
- result=self.wait.until(ec.text_to_be_present_in_element(el,txt))
- return result
- # 获得文本内容结果
- @allure.step("获得返回文本")
- def get_text(self,name,value):
- el = (name, value)
- # result = self.wait.until(ec.visibility_of_element_located(el)).text
- result = self.wait.until(
- lambda x: x.find_element(*el).text
- )
- return result
- # lamda
- # 断言文本内容
|