javascript - 如何使用 Nightwatch 处理 Safari 中的文件下载弹出窗口

标签 javascript selenium-webdriver safari nightwatch.js saucelabs

我正在尝试使用类似的东西,类似于我的火狐选项,但我的测试似乎无法处理下载弹出窗口,有什么建议吗?谢谢

"safari": {
      "downloadFolder": "Users/chef/Downloads/",
      "desiredCapabilities": {
        "browserName": "Safari",
        'safari:safariOptions': {
          prefs: {
            'safari.options.dataDir':'Users/chef/Downloads/',
            'safari.helperApps.neverAsk.saveToDisk':'image/jpeg;application/binary;application/pdf;text/plain;application/text;text/xml;application/xml;text/html;text/csv;video/mp4'
          },
        }
      }
    }

我发现现有的帖子可能会提供一些背景信息

最佳答案

Selenium 有一些切换窗口的方法,你可以在这篇文章中看到:https://saucelabs.com/blog/selenium-tips-working-with-multiple-windows

如果您要存储原始窗口的 ID,然后使用 switchTo() 方法并转到原始窗口,希望您可以处理与下载弹出窗口交互的任何问题:

//Store the ID of the original window
const originalWindow = await driver.getWindowHandle();

//Check we don't have other windows open already
assert((await driver.getAllWindowHandles()).length === 1);

//Click the link which opens in a new window
await driver.findElement(By.linkText('new window')).click();

//Wait for the new window or tab
await driver.wait(
    async () => (await driver.getAllWindowHandles()).length === 2,
    10000
  );

//Loop through until we find a new window handle
const windows = await driver.getAllWindowHandles();
windows.forEach(async handle => {
  if (handle !== originalWindow) {
    await driver.switchTo().window(handle);
  }
});

//Wait for the new tab to finish loading content
await driver.wait(until.titleIs('Selenium documentation'), 10000);

有关其他示例,请参阅 Selenium 文档:https://www.selenium.dev/documentation/webdriver/browser_manipulation/#switching-windows-or-tabs .

不确定这是否有帮助,请告诉我!

关于javascript - 如何使用 Nightwatch 处理 Safari 中的文件下载弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70012703/

相关文章:

javascript - 我可以为 highchart 工具提示使用两种不同的格式化程序吗?

javascript - 定价最小到最大下拉列表的相关下拉列表

python - 从 Python 中的 DatePicker 中选择

c# - 获取 IE 屏幕截图返回黑色图像

javascript - JQuery Datepicker 反转下一个和上一个按钮事件

java - 无法使用 selenium 读取 <h3> 下的 <p> 文本

node.js - Nginx: proxy_pass + websocket + basic authentication + Safari = 访问日志无限循环

javascript - jQuery - 不在 safari 中添加类?

html - Flex/Grid 布局不适用于按钮或字段集元素

javascript - 如何使用javascript聚焦图像?