def click_by_js(self, locator: Enum) -> None: """ 通过js点击操作 :param locator:元素定位表达式 :return: None """ try: logger.info('点击元素:{}, 元素描述:{}'.format(locator.value, locator)) ele = WebDriverWait(self.driver, self._timeout).until(EC.element_to_be_clickable(locator)) self.driver.execute_script("arguments[0].click();", ele) except Exception: logger.error('点击失败,元素不可点击或者元素点位失败') self.save_screenshot() raise 请以这个格式封装execute_script函数
时间: 2023-12-25 18:05:57 浏览: 102
def execute_script(self, script: str, *args) -> Any:
"""
执行JS脚本
:param script: JS脚本
:param args: JS脚本参数
:return: JS脚本执行结果
"""
try:
logger.info('执行JS脚本:{}'.format(script))
result = self.driver.execute_script(script, *args)
logger.info('执行成功,结果为:{}'.format(result))
return result
except Exception:
logger.error('执行JS脚本失败')
self.save_screenshot()
raise
相关问题
def clicks(self, locator: Enum, index:int) -> None: """ 点击操作 :param locator:元素定位表达式 :return: None """ > WebDriverWait(self.driver, timeout).until(EC.element_to_be_clickable(locator.value)) E NameError: name 'timeout' is not defined
这个错误是因为在该函数中使用了变量 `timeout`,但是没有定义。你需要在函数中定义 `timeout` 变量,或者将其作为参数传递给函数。例如,你可以在函数开头添加以下代码:
```
timeout = 10 # 设置10秒的超时时间
```
这样就可以避免该错误。
def click(self, locator: Enum) -> None: """ 点击操作 :param locator:元素定位表达式 :return: None """ ele = self.find_element(locator=locator) # WebDriverWait(self.driver, 10).until(EC.element_to_be_clickable(locator)).click() if ele.is_enabled(): ele.click() logger.info('点击元素:{}, 元素描述:{}'.format(locator.value, locator)) else: logger.error('点击失败,开始截图') self.save_screenshot() raise Exception("元素不可点击") 按照这个格式,定义一个clear函数
可以按照以下格式定义一个clear函数:
```python
def clear(self, locator: Enum) -> None:
"""
清除操作
:param locator: 元素定位表达式
:return: None
"""
ele = self.find_element(locator=locator)
if ele.is_enabled():
ele.clear()
logger.info('清除元素:{}, 元素描述:{}'.format(locator.value, locator))
else:
logger.error('清除失败,开始截图')
self.save_screenshot()
raise Exception("元素不可清除")
```
该函数与click函数的主要区别在于,使用`ele.clear()`方法清除元素内容,并将日志信息改为“清除元素”。同时,异常信息也需要改为“元素不可清除”。
阅读全文