问题描述
我发现了以下用途,但没有关于使用 browserstack_executor 的其他可能操作的文档:
我正在寻找一个 removeFile
或 unlinkFile
或 deleteFile
来删除浏览器下载的文件,并且在下一个文件下载并获得(1) 添加到文件名中。
在我的硒测试中,我正在做这样的事情:
if driver._is_remote:
action = {"action": "fileExists","arguments": {"fileName": os.path.basename(self.filepath)}}
if driver.execute_script(f'browserstack_executor:{json.dumps(action)}'):
action = {"action": "getFileContent","arguments": {"fileName": os.path.basename(self.filepath)}}
content = driver.execute_script(f'browserstack_executor:{json.dumps(action)}')
with open(self.filepath,"wb") as f:
f.write(base64.b64decode(content))
action = {"action": "deleteFile","arguments": {"fileName": os.path.basename(self.filepath)}}
delete_status = driver.execute_script(f'browserstack_executor:{json.dumps(action)}')
我尝试过的所有 3 种方法都得到 invalid action
,因此必须有其他方法可以在浏览器堆栈中清除机器上的文件。
解决方法
我相信“browserstack_executor”是一个特定于 BrowserStack 的自定义执行器,它可以执行的操作集有限。
支持的操作在他们的文档中可用: https://www.browserstack.com/docs/automate/selenium/test-file-upload https://www.browserstack.com/docs/automate/selenium/test-file-download
因此,无法执行诸如 removeFile 或 unlinkFile 或 deleteFile 之类的操作,因为它们当前不受支持,并且在上面共享的链接中也未提及。
,根据公司支持人员,没有列表,不支持取消链接。为了解决这个问题,我修改了 FileExists ExpectedCondition 我用来在从测试系统中提取文件后自动增加文件名并使用“下一个可用”名称,以便我的测试可以在本地或在相同的地方运行浏览器堆栈。