Kemungkinan masalah dengan Chromedriver 78, Selenium tidak dapat menemukan elemen web PDF dibuka di Chrome

17

Sampai Google Chrome saya tidak diperbarui ke versi 78 kode saya berfungsi dengan baik. Saya juga memperbarui chromedriver ke versi 78.0.3904.70. Jadi saya tidak dapat lagi menemukan WebElement dengan id = 'plugin' menggunakan Selenium WebDriver dan Java:

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

Selain bagian itu tes saya berfungsi dengan baik. Saya belum pernah mengalami masalah serupa sebelumnya. Saya juga mencoba mencari WebElement id = 'konten' tetapi saya menerima kesalahan yang sama.

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

Script otomatisasi saya harus menemukan elemen PDF dan gulir halaman ke bawah. Alih-alih, saya menerima kesalahan ini: org.openqa.selenium.TimeoutException: Habis setelah 90 detik menunggu visibilitas elemen yang ditemukan oleh By.id: plugin

Adakah yang menghadapi masalah serupa? Terima kasih sebelumnya.

Campuran
sumber
Hari ini saya menghapus Google Chrome versi 78 dan menginstal versi 76 dan tes otomatisasi saya berfungsi lagi. Semuanya bekerja dengan sempurna. Saya harap masalah dengan versi 78 ini akan diperbaiki. Jadi saya menggunakan chromedriver (versi 78) dan dalam file .pom saya, saya memiliki ketergantungan berikut: <dependency> <groupId> org.seleniumhq.selenium </groupId> <artifactId> selenium-chrome-driver </artifactId> <version> 3.141.59 </version> </dependency>
Campur
Saya memiliki masalah yang sama. Kode yang berfungsi sebelumnya, sekarang gagal karena driver web gagal menemukan elemen web apa pun yang saya coba temukan. Menunggu implisit dan eksplisit gagal sama. Apa yang saya belum bisa tunjukkan adalah jenis elemen yang mengalami masalah dengan atau jika itu hanya komponen yang terletak di dalam iframe. Sebagai solusinya, saya telah menambahkan Thread.sleepdi tempat-tempat di mana saya telah menunggu secara implisit atau eksplisit sebelum pembaruan ini.
hfontanez
Chrome 78 dengan chromedriver 77 berfungsi untuk saya.
Yun

Jawaban:

5

Saya sudah mengalami masalah yang sama.

Tampaknya Chrome secara otomatis memperbarui sendiri. Kemarin (29 Okt '19) ChromeDriver saya mulai mengeluh bahwa itu tidak kompatibel dengan Chrome 78. Saya memperbarui driver ke versi 78. Saya mulai mendapatkan pengecualian acak org.openqa.selenium.NoSuchElementException ketika mencoba menemukan elemen yang saya konfirmasi ada di sana. FindElement [s] juga berfungsi ketika saya menggunakan breakpoints. Saya juga mencoba menunggu secara implisit, dengan keberhasilan yang terbatas.

Saya mencoba solusi ChromeOption zsbappa tetapi tidak ada sukacita.

Google menyulitkan untuk mendapatkan Chrome versi lama, tetapi saya menemukan versi 76 di https://www.neowin.net/news/google-chrome-76-offline-installer/ . Hati-hati, penginstal online memasang versi terbaru. Saya kembali ke pengemudi untuk 76 dan semuanya baik-baik saja. Semua tes Selenium saya berfungsi lagi.

Kesimpulan saya adalah bahwa Chrome 78 dan driver terkait memiliki kondisi balapan di mana Selenium mencoba untuk menginterogasi halaman web sebelum selesai.

wdtj
sumber
Saya telah membuka Edisi 3198 dengan pengembang ChromeDriver.
wdtj
1
Saya menerima respons berikut untuk masalah saya: Terima kasih telah melaporkan masalah ini. Pada versi 77, Chromedriver tidak menunggu bingkai atau iframe dimuat saat bernavigasi ke halaman baru, atau beralih jendela. Ini memperkenalkan perlunya kode menunggu sumber daya tersedia. Sebagian besar binding memiliki penantian eksplisit serta pengaturan penantian implisit. Cari WebDriverWait dalam dokumentasi Selenium untuk informasi lebih lanjut.
wdtj
Tetapi kami menggunakan menunggu secara eksplisit dan itu tidak membantu. Memang membantu untuk mengubah iframe tetapi tag HTML tidak terlihat lagi untuk pdf tertanam.
Campur
Saya membuka masalah baru pada grup chromedriver
Campur
Anda dapat menggunakan Chromium untuk pengujian, ini adalah versi dasar dari Chrome tanpa layanan Google, itu tidak akan memperbarui sendiri dan berfungsi dengan baik dengan Chromedriver: chromium.org/getting-involved/download-chromium
Blaise
3

Kami telah menghadapi masalah serupa dengan Chrome 78.0.3904.7, Chromedriver 77/78, Python Selenium 3.141.0.

Dalam pengujian Python Selenium otomatis kami, kami telah melihat beberapa kegagalan di mana tampaknya klik pada elemen belum terjadi. Bahkan lebih aneh lagi, tampaknya elemen tersebut telah menjadi aktif (seolah-olah hendak diklik) tetapi peristiwa klik yang sebenarnya tidak pernah terjadi. Akibatnya, halaman beralih dll tidak terjadi yang mengakibatkan berbagai kegagalan hilir.

Dengan proses jejak dan kesalahan, kami menemukan bahwa menggunakan fungsi .click () standar sekarang tidak dapat diandalkan:

webdriver_element.click()

Tetapi menggunakan Action Chains tampaknya bisa diandalkan:

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

Tidak jelas mengapa ini terjadi. Kegagalan dimulai segera setelah kami memutakhirkan ke Chrome 78.0.3904.7. Kami menggunakan Chromedriver 77.0.3865.90 tetapi pengujian yang sama lulus dengan andal di versi Chrome 77.x oleh karena itu tampaknya ada sesuatu yang salah atau telah berubah di Chrome 78.

Oli Boorman-Humphrey
sumber
Ini sedikit membantu saya, terima kasih.
Piedone
1

Dengan menambahkan argumen berikut, saya telah memecahkan masalah saya.

   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);
zsbappa
sumber
Hai @zsbappa! Terimakasih atas balasan anda. Namun, ini tidak menyelesaikan masalah saya. Masalahnya adalah bahwa chromedriver (versi 78) tidak dapat menemukan elemen web dalam pdf tertanam. Fungsionalitas ini berfungsi dengan baik sampai Google chrome tidak diperbarui ke versi 78. PS Saya TIDAK menjalankan tes saya dalam mode tanpa kepala
Mix
Tidak jelas bagaimana opsi ini memecahkan masalah OPs.
Cal Corbin
Ini tidak menyelesaikan masalah. Kemungkinan besar, Anda menjalankan skenario di mana elemen web tidak terletak di dalam iframe.
hfontanez
1

Saya telah menghadapi masalah yang sama ketika mencoba mengakses tab di dalam iframe, dulu berfungsi dengan baik di versi 76. Sekarang yang telah memperbarui sendiri ke 78, itu gagal. Telah mencoba menunggu, menunggu implisit, tidur, cari elemen menggunakan xpath, CSS, id, alihkan konteks, gulir hingga tampilan, dll., Tanpa hasil. Saya menggunakan windows 10, 1809. Saya tidak tahu apakah ini terjadi di OS lain.

Inilah pertanyaan yang saya ajukan:

Masalah menggunakan pelacak chromedriver 78.0.3904.70

DavidRYV
sumber
1

Saya mengkonfirmasi kemarin bahwa masalah ini hanya muncul ketika elemen terkandung dalam iframe. Dalam kasus tersebut, iframe berada dengan baik. Namun, mencoba mencari elemen web menggunakan driver atau objek menunggu driver web akan menghasilkan NoSuchElementatau TimeoutExceptionmasing - masing.

Saya memberikan kepada tim chromedriver log driver chrome verbose dan mereka sedang mengerjakannya.

PEMBARUAN : Dari edisi chromedriver 3223

Log menunjukkan bahwa eksekusi finalContextCreated untuk bingkai tidak selesai sampai setelah FindElement mengembalikan nol. Mulai dalam versi 77, ChromeDriver berhenti menunggu semua bingkai dimuat sebelum melanjutkan navigasi. Sayangnya, perubahan itu mencegah menunggu frame saat ini dimuat. 3164 akan semua menunggu frame saat ini memuat; ini harus mencegah FindElement dari pencarian sampai setelah frame telah berhenti memuat dan contextContext dibuat.

Pada dasarnya, bug ini diperkenalkan di v.77. Banyak dari kita hanya memperhatikan masalah ini karena kami memutakhirkan dari v.76 ke .v78. Word adalah bahwa mereka menargetkan perbaikan untuk .v80 (bukan v. 79). Sebagai solusinya, saya menggunakan Thread.sleepantara waktu saya beralih ke iframe dan ketika saya mencoba untuk menemukan komponen. Solusi ini berfungsi dengan baik. Bahkan, Anda dapat memverifikasi ini sendiri dengan hanya menjalankan aplikasi Anda dalam mode DEBUG. Ketika Anda menjeda eksekusi (dengan menggunakan breakpoint), Anda akan melihat bahwa kode asli Anda (tanpa tidur) berfungsi dengan baik.

hfontanez
sumber
0

Misalnya: Anda dapat mencoba menggunakan kata kunci ini !.

1. implicit_wait=10
2. Sleep  10
GN Narasimhamurthy
sumber
Hai @Narasimhamurthy GN, terima kasih atas jawaban Anda. Tunggu Eksplisit bukan masalah, saya menggunakan Tunggu Eksplisit di seluruh tes saya dan saya tidak menghadapi masalah yang sama. Masalahnya adalah bahwa chromedriver (versi 78) tidak dapat menemukan elemen web dalam pdf tertanam.
Campur
Bagi saya beberapa test case saya juga menghadapi masalah yang sama untuk itu saya menggunakan "geckodriver" (Firefox).
Narasimhamurthy GN
jika tidak, gunakan kata kunci pelacak perpustakaan selenium yang berbeda untuk menemukan WebElement.
Narasimhamurthy GN
Sayangnya, disarankan agar pengguna aplikasi web kami menggunakan Chrome atau Internet Explorer, Firefox tidak disarankan karena alasan tertentu. Itu sebabnya saya tidak bisa menggunakan Firefox untuk mengotomatisasi tes. Saya mencoba menggunakan semua cara yang mungkin untuk menemukan elemen web di pdf menggunakan selenium tetapi tidak berhasil. Saya juga mencoba menggunakan dependencieds dan chrome yang berbeda dan tidak ada yang berhasil.
Campur
0

Saya memiliki masalah yang sama.

Setelah memperbarui Chrome secara otomatis dengan versi 78.0, skrip pengujian otomatis saya gagal. Jadi saya memperbarui chromedriver ke versi 78, tetapi driver masih tidak dapat menemukan elemen web apa pun. Setelah itu saya mencoba dengan beberapa versi chromedriver dan akhirnya masalah saya teratasi dengan chromedriver versi 2.44 .

Versi ini dapat ditemukan di https://chromedriver.storage.googleapis.com/index.html?path=2.44/

Sagar Bhavsar
sumber
-1

Anda dapat Nuget package manager, hapus drive Chrome dan cari chrome, unduh versi baru selenium.web.driver.ChromeDriver >> untuk jsaKamoto

di sana Anda menemukan versi chrome 78.

Thiago
sumber
Terima kasih atas tanggapannya, tetapi itu tidak benar-benar menjawab masalah pengecualian NoSuchElement di versi chrome 78.
wdtj