6

Tek istediğim, web mağazasından bir krom uzantısı yüklemek. Bunu anlamak için çok fazla arama yapıyorum, ancak yalnızca yerel makineden uzantı yükleyebileceğimizi biliyordum. Selenium'un web mağazasından veya bir URL'den uzantı yükleme işlevselliğine sahip olmadığını merak ediyorum.Selenium'u kullanarak krom uzantısı yükleme

Lütfen bana ne denediğimi selenium kullanarak mümkün olduğunu bildirin.

+0

Bir seçenek, test komut dosyalarını çalıştırdığınız her seferinde webstore'dan crx dosyasını indirmek için java'yı kullanmak ve ardından indirilen komut dosyasını chromeoptions'a yüklemek. Java'da internetten dosya indirmek için birçok seçenek vardır. Sizin durumunuzda yaklaşım kabul edilebilir mi? – parishodak

+0

evet, mağazadan uzantıyı indirip yükledikten sonra yükleme de yapacak. Ama CRX dosyasını indirebilir miyim emin değilim? İndirilen URL'ler var mı? –

cevap

7

Neden Webstore'dan indirme konusunda özellikle emin olduğunuzdan ve Chrome'a ​​yüklediğinizden emin değilim. Uzatma sayfasından uzantısı, internete bağlı bir bilgisayar -Ile

yükleyin: uzatma kaynak koduna https://chrome.google.com/webstore/detail/
-Navigate

Ben krom uzantıları indirmek için bazı adımlar bulundu. XP'de bu, şu adreste bulunur: C: \ Belgeler ve Ayarlar \\ Yerel Ayarlar \ Uygulama Verileri \ Google \ Chrome \ Kullanıcı Verileri \ Varsayılan \ Uzantılar \
Bir sürüm klasörü görmelisiniz (örn. "0.0.21_0") . Bu klasörü kopyalayın ve yüklemek istediğiniz makineye taşıyın.
bağlantısız makinede krom yukarı -Aç ve İngiliz anahtarı gidin -> Araçlar -> Eklentiler
et''i tıklayın + '... Paketi uzantısı' geliştirici seçeneklerini
-Click görüntülemek ve versiyon seçmek Geliştirici moduna sonraki kök dizini olarak klasör. Özel anahtar dosyasını boş bırakın. Bu sürüm klasöründe bir .crx dosyası geliştiriciymiş gibi özel bir anahtar ile birlikte oluşturacaktır. .

--VEYA--

1- ilgilendiğiniz uzantısının kimliğini bulun uzatma ayrıntılar sayfasında, bu olacak bir şey gibi: bfbmjmiodbnnpllbbbfblcplfjjepjdn https://chrome.google.com/webstore/detail/

sonra

2- başka bir tarayıcı (Chrome) yapıştırın: https://clients2.google.com/service/update2/crx?response=redirect&x=id%3D~~~~%26uc

3- ve uzatma numarası ile ~~~~ değiştirilmesi. Bir CRX dosyası kaydetmeniz istenecektir. Bu dosyayı bir Chrome penceresine sürükleyin ve yükleme işlemine devam edin.

Kaynak: Nihayet https://productforums.google.com/forum/#!topic/chrome/g02KlhK12fU

, uzantıyı

ChromeOptions options = new ChromeOptions(); 
options.addExtensions(new File("/path/to/extension.crx")); 
DesiredCapabilities capabilities = new DesiredCapabilities(); 
capabilities.setCapability(ChromeOptions.CAPABILITY, options); 
ChromeDriver driver = new ChromeDriver(capabilities); 

Kaynak yüklemek için ChromeOptions indirilen .crx dosyasını kullanın: https://sites.google.com/a/chromium.org/chromedriver/extensions

+0

Teşekkür ederim parishodak. Bunu, belirli bir kimlik için indirme URL'si veren bir JS kullanarak yaptım. –

+0

Bunu, bana belirli bir kimlik için indirme URL'si veren bir JS kullanarak yaptım. Son hedefim, farklı uzantılardan gelen istekleri engellemektir. Bunun için isteğimi yakalamak için 'chrome.webRequest.onBeforeRequest' API'sini kullandığım başka bir uzantı kullanıyorum. Ancak kromun, işleyicime uzantılardan gelen istekleri iletmediği görünüyor. Kullanabileceğim başka bir API 'chrome.devtools.network.onRequestFinished' ancak geliştirici aracı açıldığında çalışır. Şimdi Selenium kullanarak geliştirici aracını nasıl açacağım? Farklı uzantılardan gelen istekleri nasıl takip edebileceğimi umar mısınız? –

+0

krom uzatma geliştirmesiyle gerçekten ilgilenmiyor. javascript'te kullanıcı tarafından istenen eylemleri içerecek şekilde genişletme hakkında http://stackoverflow.com/questions/23825371/running-a-chrome-extension-from-selenium-webdriver bu yayına bakın. faydalı olacağını bilmiyorum – parishodak

1

Değil emin niçin, ama biri silindi onların cevabı, hangi doğruydu İşte (@parishodak kaynaklı) içeriği: Bu takip etmek istiyorum ve başarılı bir sonuç varsa

ChromeOptions options = new ChromeOptions(); 
options.addExtensions(new File("/path/to/extension.crx")); 
DesiredCapabilities capabilities = new DesiredCapabilities(); 
capabilities.setCapability(ChromeOptions.CAPABILITY, options); 
ChromeDriver driver = new ChromeDriver(capabilities); 

Bu özel örnek Belgeniz dosyasında Java

2
  1. koyun chromedriver exe içindedir.

  2. Google'dan "GET CRX" uzantısını indirin.

  3. Uzantınızı indirin (yani, Rest API testi için mayın "DHS" dir).

  4. Git uzantınıza onun üzerine sağ tıklayın ve :: CRX
    (Bu, CRX dosyasını indirmek gerekir GET >> (zaten yüklediğiniz yer) için arama >> Chrome Web Mağazası'na. Benim durumumda için CRX dosyası "extension_1_2_5.crx")

  5. CRX dosyasını herhangi bir Chrome penceresine bırakın (bu onu reddedebilir, ancak endişelenmenize gerek yoktur).

  6. Şimdi, testi kurmak ve

    public static void openChromeExtension(){ 
    
        System.setProperty("webdriver.chrome.driver", "/Users/[your local name]/Documents/chromedriver"); 
    
        ChromeOptions options = new ChromeOptions(); 
        options.addExtensions(new File("/Users/[your local name]/Documents/extension_1_2_5.crx")); 
    
        DesiredCapabilities capabilities = new DesiredCapabilities(); 
        capabilities.setCapability(ChromeOptions.CAPABILITY, options); 
        ChromeDriver driver = new ChromeDriver(capabilities); 
        System.out.println("Opening extension"); 
        driver.get("chrome-extension://**aejoelaoggembcahagimdiliamlcdmfm**/dhc.html"); 
    
        driver.navigate().refresh(); 
        System.out.println("Refresh successfully"); 
    } 
    

    // Bu uzantı URL yürütmek veya chrome id alabilirsiniz: // uzantıları/uzantısını bulup kimliği kopyalayın. Bununla birlikte, URL uzantı URL'si olmalıdır.

+0

Bana verdiği dosya a.bin dosyası bir .crx dosyası değil. Bu normal mi? – MattClimbs

0
using System.IO; 
using System.IO.Compression; 



    public static class ChromeExtension 
     { 
      public static string Execute() 
      { 
       var ParentPath = Directory.GetParent(Directory.GetCurrentDirectory()).Parent; 
       var DirectoryPath = ParentPath.FullName.Remove(ParentPath.FullName.IndexOf(ParentPath.Name)); 

       string startPath = $"{DirectoryPath}\\Exchanger\\ChromeExtension"; 
       string zipPath = $"{DirectoryPath}Exchanger\\Extension.zip"; 

       if (System.IO.File.Exists(zipPath)) 
       { 
        System.IO.File.Delete(startPath); 
       } 

       ZipFile.CreateFromDirectory(startPath, zipPath); 


       if (System.IO.File.Exists($"{DirectoryPath}\\Exchanger\\Extension.crx")) 
       { 
        System.IO.File.Delete($"{DirectoryPath}\\Exchanger\\Extension.crx"); 
       } 

       System.IO.File.Move(zipPath, $"{DirectoryPath}\\Exchanger\\Extension.crx"); 

       return $"{DirectoryPath}\\Exchanger\\Extension.crx"; 
      } 

     } 

.... //// .... beklendiği gibi her zaman işe teknik açıdan her ne kadar

Used: 
var options = new ChromeOptions(); 
options.AddExtension(ChromeExtension.Execute()); 

....////.... 
0

Yukarıdaki çözümler, bu yüzden bunu yapmak için başka bir yol düşündü.

Sonra
chrome_options = Options() 
chrome_options.add_argument("user-data-dir=selenium") 
driver = webdriver.Chrome(chrome_options=chrome_options) 
driver.get("www.google.com") 

el Uzantıları yüklemek ve yapın: defalarca Çünkü vb daha elle yapılır şeylerin, kimlik doğrulama, bazı çerez bir sürü, ben profilleri gibi klasörleri kullanmak

lazım, koşmak logins Olduğuna o klasör herşeyi Webdriver başlatmak artık her-zamana ihtiyacı

chrome_options = Options() 
chrome_options.add_argument("user-data-dir=selenium") 
driver = webdriver.Chrome(chrome_options=chrome_options) 
driver.get("www.google.com") #Now you can see the Extensions and the logins done are present 

avantajı Extens yükleme ve kaldırma gerek kalmadan farklı ayar ve uzantıları ile birden fazla klasör kullanabileceği başka iyonlar, ayarları değiştir, girişleri değiştir vb

İlgili konular