it-swarm.com.de

Klicken Sie unter Selenium Webdriver auf Zulassen im Popup "Benachrichtigungen anzeigen"

Ich versuche mich bei Facebook anzumelden. Nach einem erfolgreichen Login erhalte ich ein Browser-Popup: 

 Show Notifications

Wie kann ich mit dem Web-Treiber auf Zulassen klicken und fortfahren?

23
Sidhant

Bitte folgen Sie den folgenden Schritten:

Schritt 1:  

// Eine Instanz der ChromeOptions-Klasse erstellen

ChromeOptions options = new ChromeOptions();

Schritt 2:  

// Chrome-Schalter zum Deaktivieren der Benachrichtigung hinzufügen - " --disable-Notifications "

options.addArguments("--disable-notifications");

Schritt 3:  

// Pfad für Treiber-Exe setzen 

System.setProperty("webdriver.chrome.driver","path/to/driver/exe");

Schritt 4 :  

// ChromeOptions-Instanz an ChromeDriver Constructor übergeben

WebDriver driver =new ChromeDriver(options);
23
Pritam Maske

Dies ist kein Alert-Feld, daher können Sie es nicht mit Alert behandeln. Dies ist eine Chrome-Browserbenachrichtigung. Um diese Browserbenachrichtigung auszuschalten, müssen Sie eine Chrome-Voreinstellungskarte mit der Chrome-Option erstellen: -

//Create prefs map to store all preferences 
Map<String, Object> prefs = new HashMap<String, Object>();

//Put this into prefs map to switch off browser notification
prefs.put("profile.default_content_setting_values.notifications", 2);

//Create chrome options to set this prefs
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", prefs);

//Now initialize chrome driver with chrome options which will switch off this browser notification on the chrome browser
WebDriver driver = new ChromeDriver(options);

//Now do your further steps

Ich hoffe es hilft..:)

8
Saurabh Gaur
import unittest

from Selenium.webdriver.common.by import By
from Selenium.webdriver.support.ui import WebDriverWait
from Selenium.webdriver.support import expected_conditions
from Selenium.webdriver.chrome.options import Options
from Selenium import webdriver
import time

class SendMsgSkype(unittest.TestCase):
    @classmethod
    def setUpClass(cls):

        options = Options()
        options.add_argument("--disable-notifications")

        cls.driver = webdriver.Chrome('./chromedriver.exe', chrome_options=options)

        cls.driver.implicitly_wait(5)
        cls.driver.maximize_window()
        cls.driver.get("https://web.skype.com/ru/")

Es funktioniert für mich ... __ Weitere Details hier: http://nullege.com/codes/show/[email protected]@[email protected]@oxbiz.py/21/Selenium.webdriver.Chrome

7
Igor Z

Die einzige funktionierende Lösung, auf die ich bisher gestoßen bin, ist folgende:

from Selenium.webdriver.chrome.options import Options

chrome_options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications" : 2}
chrome_options.add_experimental_option("prefs",prefs)
driver = webdriver.Chrome(chrome_options=chrome_options)
5
SIM

es wurde noch keine Antwort akzeptiert, der folgende Code funktioniert für mich 

Ruby, Rspec, Capybara

Capybara.register_driver :Selenium_chrome do |app|
  prefs = {"profile.managed_default_content_settings.notifications" => 2,}
  caps = Selenium::WebDriver::Remote::Capabilities.chrome(chrome_options: { prefs: prefs })

  Capybara::Selenium::Driver.new(app, browser: :chrome, desired_capabilities: caps)
end

Capybara.javascript_driver = :Selenium_chrome
2
Jin.X
try {

   // Check the presence of alert
   Alert alert = driver.SwitchTo().Alert();

   // if present consume the alert
   alert.Accept();

  } catch (NoAlertPresentException ex) {
     //code to do if not exist.
  }
1
Leon Barkan

wenn Sie mit Ruby und Capybara spielen, versuchen Sie diesen Code

    Capybara.register_driver :chrome_no_image_popup_maximize do |app|
    # 2: disable, other than 2 means enable it
    preferences = {
        "profile.managed_default_content_settings.notifications" => 2,
        "profile.managed_default_content_settings.images" => 2,
        "profile.managed_default_content_settings.popups" => 2   
    }

    caps = Selenium::WebDriver::Remote::Capabilities.chrome( 
        'chromeOptions' => {
            'prefs' => preferences, 
        } 
    )

    args = [ "--start-maximized" ]

    Capybara::Selenium::Driver.new(app, {:browser => :chrome, :desired_capabilities => caps, :args => args})
end

Capybara.default_driver = :chrome_no_image_popup_maximize
Capybara.javascript_driver = :chrome_no_image_popup_maximize
0
Daniel Deng

Das Facebook-Authentifizierungsfenster zeigt eine Überlagerung an, die die Schaltfläche continue als [Benutzername] abdeckt. 

 enter image description here

Dadurch kann die Schaltfläche "Weiter" nicht angeklickt werden. Um dieses Problem zu umgehen, können Sie diese Ebenen mithilfe von JavaScript (nicht empfohlen) mithilfe dieses Codes programmgesteuert ausblenden (tun Sie dies nicht).

  // DO NOT USE THIS CODE.
  function forceClickSetup(targetSelector) {
      return browser.selectorExecute("div", 
      function(divs, targetSelector) {
        var button = document.querySelector(targetSelector);
        for(var i = 0; i < divs.length; i++) {
          if(!divs[i].contains(button)) {
            divs[i].remove();
          }
        }
        return i;
    }, targetSelector);
  }

Sie können stattdessen auch den Benachrichtigungsdialog schließen, wonach Facebook die Schaltfläche continue aufdeckt. Bevor Sie jedoch Escape im Browser wild schlagen, vergewissern Sie sich zunächst, dass die Schaltfläche continue angezeigt wurde.

// USE THIS CODE.
browser.waitForVisible("[name=__CONFIRM__]");
browser.keys("Escape"); // Dismiss "notifications" dialog box.

var confirmButtonSelector = "[name=__CONFIRM__]";

Diese Lösung ist wirklich Matthijs '(siehe Kommentare oben)

0
Garrett