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&reanudar=&>
</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.
Thread.sleep
di tempat-tempat di mana saya telah menunggu secara implisit atau eksplisit sebelum pembaruan ini.Jawaban:
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.
sumber
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:
Tetapi menggunakan Action Chains tampaknya bisa diandalkan:
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.
sumber
Dengan menambahkan argumen berikut, saya telah memecahkan masalah saya.
sumber
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
sumber
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
NoSuchElement
atauTimeoutException
masing - masing.Saya memberikan kepada tim chromedriver log driver chrome verbose dan mereka sedang mengerjakannya.
PEMBARUAN : Dari edisi chromedriver 3223
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.sleep
antara 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.sumber
Misalnya: Anda dapat mencoba menggunakan kata kunci ini !.
sumber
Ini ternyata menjadi masalah dengan Google Chrome, bukan chromedriver: https://bugs.chromium.org/p/chromedriver/issues/detail?id=3211
sumber
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/
sumber
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.
sumber