如何使用selenium webdriver处理chrome通知弹出窗口?

时间:2017-05-25 15:48:51

标签: selenium-webdriver automation

如果任何人使用Chrome浏览器登录任何应用程序,则会出现通知弹出窗口以保存密码/允许通知。 如何通过selenium web-driver处理此通知弹出窗口?有时会出现两个弹出窗口(一个用于保存密码,另一个用于允许通知)。我已经尝试使用Alert类处理但是无法成功。请帮助我。

7 个答案:

答案 0 :(得分:0)

您可以打开使用ChromeOptions类。以下是示例代码。

ChromeOptions chrome_Profile = new ChromeOptions();
chrome_Profile.addArguments("chrome.switches","--disable-extensions"); 
chrome_Profile.addArguments("--disable-save-password");
chrome_Profile.addArguments("disable-infobars");

System.setProperty("webdriver.chrome.driver","c/chromedriver.exe");
//Passing chrome_Profile while initializing the ChromeDriver    
WebDriver driver = new ChromeDriver(chrome_Profile);

如果有帮助,请告诉我。

答案 1 :(得分:0)

您可以使用以下代码来允许Chrome发送通知:

ChromeOptions options=new ChromeOptions();
Map<String, Object> prefs=new HashMap<String,Object>();
prefs.put("profile.default_content_setting_values.notifications", 1);
//1-Allow, 2-Block, 0-default
options.setExperimentalOption("prefs",prefs);
ChromeDriver driver=new ChromeDriver(options);

答案 2 :(得分:0)

@Pritesh patel
 it didnt work for me.. I want to allow the flash to run
package com.selenium.Basics;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;      
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import Flash.FlashObjectWebDriver;
public class GuruPgm14FlashTesting {

    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        String driverPath="C:\\selenium\\chromedriver.exe";
        System.setProperty("webdriver.chrome.driver", driverPath);

        ChromeOptions options=new ChromeOptions();
        Map<String, Object> prefs=new HashMap<String,Object>();
        prefs.put("profile.default_content_setting_values.notifications", 1);
        //1-Allow, 2-Block, 0-default
        options.setExperimentalOption("prefs",prefs);
        WebDriver driver=new ChromeDriver(options);

        driver.get("http://demo.guru99.com/test/flash-testing.html");
        Thread.sleep(5000);
        driver.findElement(By.xpath("//embed[@play='false']")).click();
        System.out.println("Clicked to allow the addon");
        Thread.sleep(5000);


        FlashObjectWebDriver fdriver= new FlashObjectWebDriver(driver, "myFlashVideo");
        fdriver.callFlashObject("Play");
        Thread.sleep(5000);
        fdriver.callFlashObject("StopPlay");
        Thread.sleep(5000);
        fdriver.callFlashObject("SetVariable","/:message","Flash testing using selenium Webdriver");
        System.out.println(fdriver.callFlashObject("GetVariable","/:message"));             

    }

}

答案 3 :(得分:0)

const webdriver = require('selenium-webdriver');
var chromeCapabilities = webdriver.Capabilities.chrome();

var chromeOptions = {
    'args': ['--disable-notifications']
};
chromeCapabilities.set('chromeOptions', chromeOptions);

如果您使用的是js。尤其是当网站现在添加选项以在屏幕上甚至添加www点来向您发送通知时,这最终会使您的窗口变黑并且无法访问其中的元素。 如果可以,请尝试将其放在其他JS文件中。原因导出是一个功能

答案 4 :(得分:0)

在Python中:

    if browser == "chrome":
        chrome_options = webdriver.ChromeOptions()
        prefs = {"profile.default_content_setting_values.notifications": 2}
        chrome_options.add_experimental_option("prefs", prefs)
        self.driver = webdriver.Chrome(chrome_options=chrome_options)
        self.driver.maximize_window()
        self.driver.implicitly_wait(10)

答案 5 :(得分:0)

您可以使用ChromeOptions类来允许/禁用通知弹出窗口。

请在下面找到代码:

    Map<String, Object> prefs = new HashMap<String, Object>();
              
    // 1 for allowing, 2 for disabling popup
    prefs.put("profile.default_content_setting_values.notifications", 1);
 
    ChromeOptions options = new ChromeOptions();
 
    options.setExperimentalOption("prefs", prefs);
    WebDriver driver = new ChromeDriver(options);

答案 6 :(得分:-1)

我们可以禁用所有类型的Chrome通知,例如保存密码,允许位置......,只需添加一个参数。

  ChromeOptions ops = new ChromeOptions();
  ops.addArguments("--disable-notifications");
  System.setProperty("webdriver.chrome.driver", ""c/chromedriver.exe"");
  WebDriver driver = new ChromeDriver(ops);
希望这对你有所帮助。 感谢。