Chromedriver 78 ile ilgili olası sorun, Selenium, PDF'nin web öğesini Chrome'da açılmış bulamıyor


17

Google Chrome'um 78 sürümüne güncellenene kadar kodum iyi çalıştı. Ayrıca, krom sürücüyü 78.0.3904.70 sürümüne güncelledim. Bu yüzden artık Selenium WebDriver ve Java kullanarak id = 'plugin' ile WebElement'i bulamıyorum:

<html>
<div id="content">
<embed id="plugin" type="application/x-google-chrome-pdf" src="http://??????????/offer_printed.php?printable=yes&amp;reanudar=&amp;>
</div>
</html>

Bu bölüm dışında testlerim iyi çalışıyor. Daha önce hiç benzer bir sorun yaşamadım. Ayrıca WebElement id = 'content' bulmaya çalıştım ama aynı hatayı alıyorum.

WebDriverWait wait = new WebDriverWait (driver, 90);
WebElement scrollvalid = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("plugin")));

scrollvalid.sendKeys(Keys.PAGE_DOWN);                       scrollvalid.sendKeys(Keys.PAGE_DOWN);

Otomasyon komut dosyam PDF öğesini bulmalı ve sayfayı aşağı kaydırmalıdır. Bunun yerine, bu hatayı alıyorum: org.openqa.selenium.TimeoutException: By.id: plugin tarafından bulunan öğenin görünürlüğünü beklerken 90 saniye sonra zaman aşımına uğradı

Benzer bir sorunla karşılaşan var mı? Şimdiden teşekkürler.


Bugün Google Chrome 78 sürümünü sildim ve 76 sürümünü yükledim ve otomasyon testim tekrar çalışıyor. Her şey mükemmel çalışıyor. Umarım sürüm 78 ile ilgili bu sorun giderilecektir. Bu yüzden chromedriver (sürüm 78) kullanıyordum ve .pom dosyamda şu bağımlılık var: <bağımlılık> <groupId> org.seleniumhq.selenium </groupId> <artifactId> selenyum-chrome-driver </artifactId> <version> 3.141.59 </ version> </ bağımlılığı>
Mix

Aynı sorunu yaşıyorum. Web sürücüsü bulmaya çalıştığım herhangi bir web öğesini bulamadığından, daha önce çalışan kod şimdi başarısız oluyor. Örtük ve açık beklemeler aynı şekilde başarısız olur. Tam olarak tespit edemediğim, sorun yaşadığı öğelerin türü ya da sadece bir iframe içinde bulunan bileşenler ise. Geçici bir çözüm olarak, Thread.sleepbu güncelleştirmeden önce örtük veya açık beklediğim yerlere ekliyorum .
hfontanez

Chromemed 77 numaralı Chrome 78 benim için çalışıyor.
Yun

Yanıtlar:


5

Aynı sorunla karşılaştım.

Görünüşe göre Chrome kendini otomatik olarak güncelliyor. Dün (29 Ekim 1919) ChromeDriver'ım Chrome 78 ile uyumlu olmadığından şikayet etmeye başladı. Sürücüyü 78 sürümüne güncelledim. Ben orada teyit öğeleri bulmaya çalışırken rastgele org.openqa.selenium.NoSuchElementException istisnaları almaya başladı. FindElement [ler], kesme noktaları kullandığımda da çalışır. Ben de sadece sınırlı bir başarı ile örtülü beklemeler denedim.

Zsbappa'nın ChromeOption çözümünü denedim ama sevinç yok.

Google, Chrome'un eski sürümlerini almayı zorlaştırıyor, ancak https://www.neowin.net/news/google-chrome-76-offline-installer/ adresinde 76 sürümünü buldum . Dikkat, çevrimiçi yükleyici en son sürümü yükler. Ben 76 için sürücüye döndü ve her şey iyi. Tüm Selenyum testlerim tekrar çalışıyor.

Sonuç olarak, Chrome 78 ve ilişkili sürücüsünün Selenium'un web sayfasını tamamlanmadan sorgulamaya çalıştığı bir yarış durumu var.


Sorun 3198'i ChromeDriver geliştiricileriyle açtım.
wdtj

1
Sorunumla ilgili şu yanıtı aldım: Bu sorunu bildirdiğiniz için teşekkür ederiz. Sürüm 77'den itibaren Chromedriver, yeni bir sayfaya giderken veya pencereleri değiştirirken çerçevelerin veya iframe'lerin yüklenmesini beklemez. Bu, kaynakların kullanılabilir olması için kod bekleme ihtiyacını ortaya koymaktadır. Çoğu bağlantının açık bekleme yanı sıra örtülü bekleme ayarları vardır. Daha fazla bilgi için Selenium belgelerinde WebDriverWait öğesini arayın.
wdtj

Ama biz açık beklemeler kullanıyoruz ve bu yardımcı olmuyor. İç çerçevelerin değiştirilmesine yardımcı olur, ancak HTML etiketleri katıştırılmış pdf için artık görünmez.
Mix

: Ben chromedriver grubuna yeni bir sorun açıldı bugs.chromium.org/p/chromedriver/issues/detail?id=3211
Mix

Testler için Chromium'u kullanabilirsiniz, Google hizmetleri olmadan Chrome'un temel bir sürümüdür, kendini güncellemez ve Chromedriver ile iyi çalışır: chromium.org/getting-involved/download-chromium
Blaise

3

Chrome 78.0.3904.7, Chromedriver 77/78, Python Selenium 3.141.0 ile benzer bir sorunla karşılaştık.

Otomatik Python Selenium testlerimizde, öğelere tıklamaların gerçekleşmediği göründüğü birden fazla hata gördük. Daha garip olsa bile, öğenin aktif hale geldiği anlaşılıyor (tıklanmak üzereymiş gibi), ancak gerçek tıklama etkinliği hiç gerçekleşmedi. Sonuç olarak, çeşitli alt akış arızalarına yol açan sayfa anahtarları vb. Oluşmaz.

Bir iz ve hata işlemiyle, standart .click () işlevini kullanmanın artık güvenilir olmadığını gördük:

webdriver_element.click()

Ancak Eylem Zincirleri kullanmak güvenilir gibi görünüyor:

ActionChains(context.browser).click(webdriver_element).perform()

Durumun neden böyle olduğu açık değil. Chrome 78.0.3904.7 sürümüne geçtikten sonra hatalar başladı. Chromedriver 77.0.3865.90 kullanıyoruz, ancak aynı testler Chrome 77.x sürümlerinde güvenilir bir şekilde geçiyor, bu nedenle bir şey yanlış görünüyor veya Chrome 78'de değişti.


Bu bana biraz yardımcı oldu, teşekkürler.
Piedone

1

Aşağıdaki argümanı ekleyerek sorunumu çözdüm.

   ChromeOptions options = new ChromeOptions();
    options.addArguments("--disable-gpu");
    options.addArguments("--disable-extensions");
    options.setExperimentalOption("useAutomationExtension", false);
    options.addArguments("--window-size=1920,1080");
    options.merge(seleniumCapabilities);
    driver = new ChromeDriver(options);

Merhaba @zsbappa! Cevabın için teşekkürler. Ancak, bu benim sorunumu çözmez. Sorun, chromedriver'ın (sürüm 78) gömülü pdf'de herhangi bir web öğesi bulamamasıdır. Bu işlev, Google krom 78 sürümüne güncellenene kadar iyi çalıştı. PS Testlerimi başsız modda çalıştırmıyorum
Mix

Bu seçeneklerin OP sorununu nasıl çözdüğü açık değildir.
Cal Corbin

Bu sorunu çözmez. Büyük olasılıkla, web öğesinin bir iframe içinde bulunmadığı senaryolar çalıştırıyorsunuzdur.
hfontanez

1

Bir iframe içindeki bir sekmeye erişmeye çalışırken aynı sorunla karşılaştım, 76 sürümünde iyi çalışırdı. Şimdi bu 78'e güncellendi, başarısız oluyor. Hiç beklemeden beklemek, örtülü beklemek, uyku, xpath, CSS, id, anahtar içeriği kullanarak öğeleri bulmak, görünüm kadar kaydırma, vb .., denedim. Windows 10, 1809 kullanıyorum. Bunun başka bir işletim sisteminde olup olmadığını bilmiyorum.

İşte ortaya koyduğum soru:

Krom tornavida 78.0.3904.70 konum belirleyicilerini kullanma sorunu


1

Dün, bu sorunun yalnızca bir iframe içinde bir öğe bulunduğunda ortaya çıktığını belirttim. Bu gibi durumlarda, iframe iyi yerleştirilmiştir. Ancak, sürücü veya web sürücüsü bekleme nesnelerini kullanarak bir web öğesini bulmaya çalışmak sırasıyla NoSuchElementveya veya ile TimeoutExceptionsonuçlanır.

Krom tornavida ekibine ayrıntılı bir krom sürücü günlüğü sağladım ve üzerinde çalışıyorlar.

GÜNCELLEŞTİRME : 3223 numaralı krom sürücüden

Günlükler, çerçeve için son executionContextCreated öğesinin FindElement öğesi null değerini döndürene kadar tamamlanmadığını gösterir. Sürüm 77'den itibaren ChromeDriver, navigasyona devam etmeden önce tüm karelerin yüklenmesini beklemeyi durdurdu. Ne yazık ki, bu değişiklik mevcut çerçevenin yüklenmesini beklemeyi engelledi. 3164, mevcut çerçevenin yüklenmesini bekleyecek; bu, FindElement öğesinin, çerçevenin yüklenmesi durdurulana ve executionContext oluşturuluncaya kadar arama yapmasını engellemelidir.

Temel olarak, bu hata v.77'de tanıtıldı. Birçoğumuz bu sorunu fark ettik çünkü v.76'dan .v78'e geçtik. Word, .v80 için bir düzeltmeyi hedefledikleri (v. 79 değil). Geçici bir çözüm Thread.sleepolarak, iframe'e geçiş yaptığım zaman ile bileşeni bulmaya çalıştığım zaman arasında kullanıyorum . Bu geçici çözüm işe yarar. Aslında, uygulamanızı DEBUG modunda çalıştırarak bunu kendi başınıza doğrulayabilirsiniz. Yürütmeyi duraklattığınızda (bir kesme noktası kullanarak), orijinal kodunuzun (uyku olmadan) iyi çalıştığını fark edeceksiniz.


0

Örneğin: Bu anahtar kelimeleri kullanmayı deneyebilirsiniz !.

1. implicit_wait=10
2. Sleep  10

Merhaba @Narasimhamurthy GN, cevabınız için teşekkür ederim. Açık Bekleme sorun değil, tüm testleri boyunca Açık Beklemeler kullanıyorum ve benzer bir sorunla karşı karşıya değilim. Sorun, chromedriver'ın (sürüm 78) gömülü pdf'de herhangi bir web öğesi bulamamasıdır.
Mix

Benim için bazı test durumlarda ben de "geckodriver" (Firefox) kullanılan aynı sorunla karşı karşıya.
Narasimhamurthy GN

aksi takdirde WebElement öğesini bulmak için farklı selenyum kitaplığı bulucu anahtar sözcüğü kullanın.
Narasimhamurthy GN

Ne yazık ki, web uygulamamızın kullanıcılarının Chrome veya Internet Explorer kullanmaları önerilir, bazı nedenlerden dolayı Firefox önerilmez. Bu yüzden testleri otomatikleştirmek için Firefox'u kullanamıyorum. Selenyum kullanarak pdf herhangi bir web öğesi bulmak için tüm olası yolları kullanmaya çalıştım ama işe yaramıyor. Ayrıca farklı bağımlılar ve chromedrivers kullanmayı denedim ve hiçbir şey işe yaramıyor.
Mix


0

Aynı sorunu yaşadım.

Chrome'u 78.0 sürümüyle otomatik olarak güncelledikten sonra otomatik test komut dosyalarım başarısız oluyordu. Bu yüzden chromedriver'ı 78 sürümüne güncelledim, ancak sürücü hala herhangi bir web öğesi bulamadı. Bundan sonra, birden fazla kromofon sürümüyle denedim ve nihayet sorunum kromedriver 2.44 ile çözüldü .

Bu sürüm https://chromedriver.storage.googleapis.com/index.html?path=2.44/ adresinde bulunabilir.


-1

Sen edebilirsiniz Nuget paket yöneticisi, silme Krom sürücü ve krom aramak, yeni sürüm indir selenium.web.driver.ChromeDriver jsaKamoto için >>

orada krom sürüm 78 bulacaksınız.


Yanıt için teşekkürler, ancak krom sürüm 78'deki NoSuchElement istisnaları sorununa gerçekten cevap vermiyor.
wdtj
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.