2016-07-31 21 views
10

Kullanarak Bildirimleri Göstermeye İzin Ver'i tıklatarak Facebook'ta oturum açmaya çalışıyorum. Selenium Webdriver

Show Notifications

nasıl webdriver ile ben izin tıklayabilir ve ileri devam: Başarılı bir girişten sonra, bir tarayıcı popup olsun? o Alert kullanarak işleyemez böylece

+1

elle şimdi ben aynı yapıyorum olanları –

+0

izin yapmak gerçekten Matthijs olduğunu! ama selenyum yapmanın bir yolu yok mu? – Sidhant

+0

Uyarı sınıfı kullanın –

cevap

0
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. 
    } 
3

Bu değil bir uyarı kutusu, bu bir krom tarayıcı bildirim aşağıdaki gibi krom seçeneği ile krom tercih harita oluşturmak gerekir bu tarayıcı uyarısı kapatın için geçerli: -

//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 

Umarım yardımcı olur .. :)

8

için aşağıdaki aşamaları takip ediniz:

Adım 1:

// ChromeOptions sınıfın bir örneğini

ChromeOptions options = new ChromeOptions(); 

Adım 2 oluşturun:

// bildirimini devre dışı bırakmak krom anahtarını ekleyin - "disable-bildirimler "

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

Adım 3: Sürücü exe için

// ayarlama yolu

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

Adım 4:

// Geçiş ChromeOptions örneği ChromeDriver için Oluşturucu

WebDriver driver =new ChromeDriver(options); 
+0

bu benim için çalıştı –

3
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/") 

Fo çalışıyor beni Burada Diğer ayrıntılar:

cevap henüz kabul edilmiş
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) 
1

bir ve şimdiye kadar geldim tek çalışma çözüm budur yakut, RSpec, Kapibara

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 
0

bu kodu deneyin Ruby ve Capybara ile oynarsa

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

Facebook authentication penceresi, 'u kapsayan bir bindirmeyi [kullanıcıadı] düğmesi olarak devam ettirir.

enter image description here

Bu devam düğme un-tıklanabilir hale getirir. Bu sorunu atlatmak için, bu kodu kullanarak bu katmanları programatik olarak JavaScript'i (önerilmez) gizleyebilirsiniz (bunu yapmayın).

// 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); 
    } 

Ya bunun yerine, facebook devam tuşuna ortaya çıkarmak olacaktır, bundan sonra bildirimler iletişim kutusunu yok sayabilirsiniz. Ancak, tarayıcıda Escape isabetine çarpmadan önce, ilk olarak 'un devam etmesinin düğmesinin gösterildiğinden emin olun.

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

var confirmButtonSelector = "[name=__CONFIRM__]"; 

Bu çözüm (yukarıdaki yorumları görmek)