查询前获取当前时间,查询后获取当前时间,获取两者时间差。
不过首先要明确这个问题是否有必要,因为百度的查询速度受服务器以及网络影响,不过如果是想要测试一个网站的性能,不如试试压力测试。
现在使用的框架是 selenium+python+unittest。
晚上确实有查到 unittest 存在一个用例基类,但是我不仅想把在用例里写日志,还想在 basepage 中封装每个 selenium 的方法时写日志,所以考虑到是否是工具类。
如果仅是用例基类,basepage 中及其它地方则无法使用日志。
后来我反复地看了您这段话,有几个问题想要确认一下:
1.这个基类可以说是一个工具类,那么如何保证单例性呢,比如基类中有一个公用的 driver,假设基类为 Utils,是否是如下的方式:
class Utils:
def init_driver():
""""初始化driver"""
return driver
utils = Utils()
driver = utils.init_driver()
# 在用例中导入driver即可
2.如果是以上方式,是否这个包会非常频繁地被导入,甚至有 from utils import driver, logger,...,这样子地导包感觉不是很优雅。
以上问题出于我对代码规范以及设计模式还是不太了解,我只是以自己看代码的舒适度来判断,所以如果有不对的地方请谅解。
不好意思,我使用了这个方法,但是输出的日志仍全部为同一行的,怎么办呢?
好的,谢谢你的建议,我会去看看的
多谢😀
我刚刚试了一下,感觉这样确实挺灵活的。另外现在的 basicConfig 可以加 handlers,所以不用写 print log 了。如下:
# 打印到控制台
stream_handler = logging.StreamHandler()
# 回滚文件输出
rotating_handler = RotatingFileHandler(filename, maxBytes=1024*1024*5, backupCount=10)
# 设置logging的输入内容形式及输出渠道
logging.basicConfig(format=fmt, datefmt=date_fmt, level=logging.INFO, handlers=[stream_handler, rotating_handler])
您好,谢谢,请问这样的话在外面只能先建立一个 Logger 的实例,然后调用其中的方法,感觉很不方便,可以不可以直接每次创建 Logger 实例的时候直接就建立一条日志了呢,即 Logger 类替代 logger.info,直接 Logger(……) 就可以了
原来是:
logger = logging.getLogger()
logger.info(msg)
我想要自己的这个类 Logger 替代 logger.info,直接 Logger(……) 就可以了,请问可以实现吗
webview 切不进去,除了请开发打开还有别的办法吗
如果是其他网站呢,肯定是 url 比较靠谱,现在我的想法是用 webview,但是不知道开发愿不愿意打开
主要是从 app 打开。定位只能定位一整块页面,里面元素定位不到。
多谢
当我使用"automationName": "UiAutomator1"或者干脆不设置时,也会偶尔有这个问题。
我不会,只是想支持一下,不好意思
你好,我还想补充问一下为什么请求过多会崩掉呢,是 appium 服务端的问题吗
好的,谢谢,确实是运行时长很长的时候才会出现这个 bug,我多运行几次试试
好的,多谢,可能是手机问题,我的手机暂时没找到高耗电杀死进程的设置
这是偶现的 bug,并不是每次都能获取到,新建 session 有时候还是会出问题
f12,当 toast 出现的时候,右键鼠标选中检查,即可定位到 toast,然后快速截图,再慢慢研究选择用 class 还是啥的定位啦。
或者你用文本定位:
el = WebDriverWait(driver, 10).until(lambda x: x.find_element(By.Xpath, "//*[text()='文字']"))
print(el.get_attribute("class"))
输出其各个属性,然后看能用哪个定位到
你好,我尝试过在手动卸载 appium settings,但是很快还是出了这个问题,appium setting 的删除和再启动与 appium socket hang up 有什么关系呢
不小心点击了关闭讨论,不好意思
我试一下,好像要下载 gstreamer
请问如何控制录制结束马上开始录制呢?
🆗
data_editor_el = self.find_element(*self.data_editor)
data_editor_el.click()
# 显式等待直至日历控件可见
WebDriverWait(self.driver, 3).until(EC.visibility_of_element_located(self.calendar))
current_ym_el = self.find_element(*self.current_ym)
current_ym = current_ym_el.text
current_year, current_month = re.findall(C.number_pattern(), current_ym)
current_year, current_month = int(current_year), int(current_month)
start_year, start_month, start_day = re.findall(C.number_pattern(), start)
start_year, start_month, start_day = int(start_year), int(start_month), int(start_day)
end_year, end_month, end_day = re.findall(C.number_pattern(), end)
end_year, end_month, end_day = int(end_year), int(end_month), int(end_day)
while start_year < current_year:
previous_year_el = self.find_element(*self.previous_year)
previous_year_el.click()
current_year -= 1
while start_year > current_year:
next_year_el = self.find_element(*self.next_year)
next_year_el.click()
current_year += 1
while start_month < current_month:
previous_month_el = self.find_element(*self.previous_month)
previous_month_el.click()
current_month -= 1
while start_month > current_month:
next_month_el = self.find_element(*self.next_month)
next_month_el.click()
current_month += 1
day_el = self.find_elements(*self.available_date)[start_day - 1]
day_el.click()
while end_year < current_year:
previous_year_el = self.find_element(*self.previous_year)
previous_year_el.click()
current_year -= 1
while end_year > current_year:
next_year_el = self.find_element(*self.next_year)
next_year_el.click()
current_year += 1
while end_month < current_month:
previous_month_el = self.find_element(*self.previous_month)
previous_month_el.click()
current_month -= 1
while end_month > current_month:
next_month_el = self.find_element(*self.next_month)
next_month_el.click()
current_month += 1
day_el = self.find_elements(*self.available_date)[end_day - 1]
day_el.click()