我正在使用 Webdriver.io 连续下载文件
我尝试了以下代码:
var webdriverio = require('webdriverio');
var options = {
desiredCapabilities: {
browserName: 'chrome'
// waitforTimeout: 1000000
}
};
webdriverio
.remote(options)
.init()
.url('https://xxx')
.setValue('#username', ‘xxx@gmail.com’)
.click('#login-submit')
.pause(1000)
.setValue('#password’,’12345’)
.click('#login-submit')
.getTitle().then(function(title){
console.log('Title was: ' + title);
})
.pause(20000)
.getUrl().then(function(url){
console.log('URL: ' + url);
})
.getTitle().then(function(title){
console.log('Title was: ' + title);
})
.click("a[href='/wiki/admin'] button.iwdh")
.getUrl().then(function (url) {
console.log('URL after settings ' + url);
})
.pause(3000)
.scroll('div.jsAtfH',0,1000)
.click("a[href='/wiki/plugins/servlet/ondemandbackup/admin']")
.pause(10000)
.click('//*[@id="backup"]/a')
//.pause(400000)
.end();
注意:文件大小为7GB,下载需要多长时间取决于网络,所以不使用pause()和timeout()有任何方法可以使用webdriver .io或node.js?
答案 0 :(得分:0)
如果您点击浏览器中的下载按钮并关闭浏览器,那么您的下载也将关闭。如果您拥有点击下载按钮的网站,请尝试重写您拥有可下载网址的代码。然后,您可以搜索模块或从http url下载文件的方式。如果您不是所有者,并且您无法在href中找到网址,那么您可以从检查员的网络部分获取生成的下载网址。
此外,我从未听说过超时后浏览器被关闭了吗?也许它来自webdriver.io我从来没有让我的chrome这么长时间打开webdriver.io
您可以尝试使用Intervall每1分钟作为示例,然后使用webdriver.io命令不要超时。
答案 1 :(得分:0)
首先,当涉及基于Webdriver的自动化框架时,您当前的任务(waiting for a HUUUUGE file to download
)不是常见的用例,包括 WebdriverIO 。这样的框架并不意味着下载大量文件。
首先,您将waitforTimeout
值与WebdriverIO 测试超时混淆。您的测试在.pause()
结束前超时。
目前,您正在通过WebdriverIO测试运行器运行测试。如果您想增加测试超时,则必须使用其他测试框架( Mocha , Jasmine 或 Cucumber )并将其timeout
值设置为您认为合适的值。继续,我建议你使用 Mocha (来自前任黄瓜家伙)。
您必须安装 Mocha :npm install --save-dev wdio-mocha-framework
并使用它运行测试。之后您的测试应如下所示:
describe("Your Testsuite", function() {
it("\nYour Testcase\n", function() {
return browser
.url('https://xxx')
.setValue('#username', ‘xxx@gmail.com’)
.click('#login-submit')
// rest of the steps
.scroll('div.jsAtfH',0,1000)
.click("a[href='/wiki/plugins/servlet/ondemandbackup/admin']")
.pause(10000)
.click('//*[@id="backup"]/a')
)}
)}
您的配置( wdio.conf.js )应包含以下内容:
framework: 'mocha',
mochaOpts: {
ui: 'bdd',
timeout: 99999999
}
作为旁注,我尝试使用上面的配置等待很长时间(> 30 mins
)并且没有任何问题。
如果这有帮助,请告诉我。干杯!
答案 2 :(得分:0)
我知道,这是一个非常老的问题,但我想通过评论回答问题(目前还没有这种可能性)。但是我也会回答主要问题。
当我在“ wdio.conf.js”文件中给出超时时,它无法执行 downlaod文件,它关闭会话,但是通过提供.pause(2000000) 在webdriver.io代码中,它可以下载7GB的文件。是什么 如果启动了会话,则在“ wdio.conf.js”文件中使用超时 没有下流?
因此,此超时与测试运行期间的元素状态有关。因此,它“确定实例应等待该元素到达状态的时间”。 https://webdriver.io/docs/timeouts.html-这会有所帮助。但是也要回答这个问题:
此类测试处理的超时更多。就像iamdanchiv为此写的那样,您应该尝试使用自动支持的框架之一,例如Mocha或Jasmine。 现在,IMO最简单的方法是使用WDIO提供的CLI进行快速的全新设置: https://webdriver.io/docs/gettingstarted.html 在这里,您只需选择要使用的其他框架即可。我建议为此使用Jasmine和Chromedriver。比起wdio.conf.js,您可以更改以下部分:
waitforTimeout: 10000,
jasmineNodeOpts: {
// Jasmine default timeout
defaultTimeoutInterval: 60000,
//
},
适合您的事物。或者您可以从wdio页面使用样板项目,如下所示: https://webdriver.io/docs/boilerplate.html
但这还不是全部!仍然需要创建一些方法或函数来检查文件。因此,请检查您将文件下载到哪里或使其下载到您想要的位置,然后创建使用某种等待的方法: https://webdriver.io/docs/api/browser/waitUntil.html
browser.waitUntil(condition, { timeout, timeoutMsg, interval })
因此,您可以在此处或在“ waitforTimeout”的wdio.conf中设置超时。在此方法条件内,您可以使用节点文件系统(https://nodejs.org/api/fs.html)检查文件的状态。
这有助于解决文件状态的等待: https://blog.kevinlamping.com/downloading-files-using-webdriverio/