Sự cố có thể xảy ra với Chromedriver 78, Selenium không thể tìm thấy phần tử web của PDF được mở trong Chrome


17

Cho đến khi google Chrome của tôi không được cập nhật lên phiên bản 78, mã của tôi vẫn hoạt động tốt. Tôi cũng đã cập nhật chromedriver lên phiên bản 78.0.3904,70. Vì vậy, tôi không thể tìm thấy WebE bổ sung với id = 'plugin' bằng Selenium WebDriver và 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>

Khác với phần đó các bài kiểm tra của tôi đang hoạt động tốt. Tôi chưa bao giờ có một vấn đề tương tự trước đây. Tôi cũng đã cố gắng tìm WebEuity id = 'content' nhưng tôi nhận được lỗi tương tự.

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

Tập lệnh tự động hóa của tôi sẽ tìm phần tử PDF và cuộn trang xuống. Thay vào đó, tôi nhận được lỗi này: org.openqa.selenium.TimeoutException: Đã hết thời gian sau 90 giây chờ đợi khả năng hiển thị của phần tử được đặt bởi By.id: plugin

Có ai phải đối mặt với một vấn đề tương tự? Cảm ơn trước.


Hôm nay tôi đã xóa Google Chrome phiên bản 78 và cài đặt phiên bản 76 và thử nghiệm tự động hóa của tôi hoạt động trở lại. Mọi thứ hoạt động hoàn hảo. Tôi hy vọng rằng vấn đề này với phiên bản 78 sẽ được khắc phục. Vì vậy, tôi đã sử dụng chromedriver (phiên bản 78) và trong tệp .pom của tôi, tôi có sự phụ thuộc sau: <phụ thuộc> <groupId> org.seleniumhq.selenium </ groupId> <artifactId> selenium-chrome-driver </ artifactId> 3.141.59 </ phiên bản> </ phụ thuộc>
Trộn

Tôi gặp vấn đề tương tự. Mã đã hoạt động trước đây, bây giờ thất bại vì trình điều khiển web không tìm thấy bất kỳ yếu tố web nào tôi đang cố gắng xác định. Chờ đợi ngầm và rõ ràng thất bại như nhau. Điều tôi chưa thể xác định chính xác là loại yếu tố mà nó đang gặp vấn đề hoặc nếu nó chỉ là các thành phần nằm trong iframe. Như một giải pháp thay thế, tôi đã thêm Thread.sleepvào những nơi mà tôi đã chờ đợi ngầm hoặc rõ ràng trước khi cập nhật này.
hfontanez

Chrome 78 với chromedriver 77 hoạt động với tôi.
Yun

Câu trả lời:


5

Tôi đã gặp vấn đề tương tự.

Rõ ràng Chrome tự động cập nhật chính nó. Hôm qua (29/10/19) ChromeDriver của tôi đã bắt đầu phàn nàn rằng nó không tương thích với Chrome 78. Tôi đã cập nhật trình điều khiển lên phiên bản 78. Tôi bắt đầu nhận được các ngoại lệ org.openqa.selenium ngẫu nhiên.NoSuchEuityException khi cố gắng tìm các yếu tố mà tôi xác nhận là có. FindEuity [s] cũng hoạt động khi tôi sử dụng các điểm dừng. Tôi cũng đã thử chờ đợi ngầm, chỉ với thành công hạn chế.

Tôi đã thử giải pháp ChromeOption của zsbappa nhưng không có niềm vui.

Google làm cho việc tải các phiên bản Chrome cũ trở nên khó khăn, nhưng tôi đã tìm thấy phiên bản 76 tại https://www.neowin.net/news/google-chrome-76-offline-installer/ . Coi chừng, trình cài đặt trực tuyến cài đặt phiên bản mới nhất. Tôi đã hoàn nguyên cho tài xế 76 và tất cả đều tốt. Tất cả các bài kiểm tra Selen của tôi đang hoạt động trở lại.

Kết luận của tôi là Chrome 78 và trình điều khiển được liên kết của nó có điều kiện chạy đua trong đó Selenium cố gắng thẩm vấn trang web trước khi hoàn tất.


Tôi đã mở Vấn đề 3198 với các nhà phát triển ChromeDriver.
wdtj

1
Tôi đã nhận được phản hồi sau đây cho vấn đề của mình: Cảm ơn bạn đã báo cáo vấn đề này. Kể từ phiên bản 77, Chromedriver không chờ tải khung hoặc iframe khi điều hướng đến trang mới hoặc chuyển đổi cửa sổ. Điều này không giới thiệu sự cần thiết của mã chờ tài nguyên có sẵn. Hầu hết các ràng buộc có một chờ đợi rõ ràng cũng như các cài đặt chờ ẩn. Tìm kiếm WebDriverWait trong tài liệu Selenium để biết thêm thông tin.
wdtj

Nhưng chúng tôi đang sử dụng chờ đợi rõ ràng và điều đó không giúp đỡ. Nó không giúp thay đổi iframe nhưng các thẻ HTML không hiển thị nữa đối với pdf được nhúng.
Trộn

Tôi đã mở một vấn đề mới trên nhóm chromedriver
Trộn

Bạn có thể sử dụng Chromium để kiểm tra, đây là phiên bản cơ bản của Chrome mà không cần các dịch vụ của Google, nó sẽ không tự cập nhật và nó hoạt động tốt với Chromedriver: chromium.org/getting-involve/doad-chromium
Blaise

3

Chúng tôi đã gặp phải một vấn đề tương tự với Chrome 78.0.3904.7, Chromedriver 77/78, Python Selenium 3.141.0.

Trong các thử nghiệm Python Selenium tự động của chúng tôi, chúng tôi đã thấy nhiều lần thất bại khi xuất hiện các nhấp chuột vào các yếu tố. Thậm chí xa lạ, có vẻ như phần tử đã bắt đầu hoạt động (như thể nó sắp được nhấp) nhưng sự kiện nhấp thực tế không bao giờ xảy ra. Kết quả là, chuyển đổi trang vv không xảy ra dẫn đến các lỗi hạ lưu khác nhau.

Bằng một quá trình theo dõi và lỗi, chúng tôi thấy rằng việc sử dụng hàm .click () tiêu chuẩn hiện không đáng tin cậy:

webdriver_element.click()

Nhưng sử dụng Action Chains có vẻ đáng tin cậy:

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

Không rõ tại sao lại như vậy. Các thất bại bắt đầu ngay khi chúng tôi nâng cấp lên Chrome 78.0.3904.7. Chúng tôi đang sử dụng Chromedriver 77.0.3865.90 nhưng các thử nghiệm tương tự vượt qua đáng tin cậy trên các phiên bản Chrome 77.x do đó có vẻ như đã xảy ra lỗi hoặc đã thay đổi trong Chrome 78.


Điều này đã giúp tôi khá nhiều, cảm ơn bạn.
0 giờ 48 phút

1

Bằng cách thêm các đối số sau đây tôi đã giải quyết vấn đề của tôi.

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

Xin chào @zsbappa! Cảm ơn bạn đã trả lời của bạn. Tuy nhiên, điều này không giải quyết được vấn đề của tôi. Vấn đề là chromedriver (phiên bản 78) không thể tìm thấy bất kỳ yếu tố web nào trong pdf nhúng. Chức năng này hoạt động tốt cho đến khi Google chrome không được cập nhật lên phiên bản 78. PS Tôi KHÔNG chạy thử nghiệm ở chế độ không đầu
Trộn

Không rõ làm thế nào các tùy chọn này giải quyết vấn đề OP.
Cal Corbin

Điều này không giải quyết được vấn đề. Rất có thể, bạn đang chạy các tình huống trong đó phần tử web không nằm trong iframe.
hfontanez

1

Tôi đã gặp phải vấn đề tương tự khi cố gắng truy cập một tab bên trong iframe, nó đã từng hoạt động tốt trên phiên bản 76. Bây giờ, nó đã tự cập nhật lên 78, nhưng không thành công. Đã thử chờ đợi, chờ đợi ngầm, ngủ, xác định vị trí các yếu tố bằng xpath, CSS, id, chuyển ngữ cảnh, cuộn cho đến khi xem, v.v., không gặp may. Tôi đang sử dụng windows 10, 1809. Tôi không biết điều này có xảy ra trong các HĐH khác không.

Đây là câu hỏi tôi nêu ra:

Sự cố khi sử dụng bộ định vị chromedriver 78.0.3904,70


1

Tôi đã xác nhận ngày hôm qua rằng vấn đề này dường như chỉ xuất hiện khi một phần tử được chứa trong iframe. Trong những trường hợp đó, iframe nằm ở vị trí tốt. Tuy nhiên, việc cố gắng xác định vị trí một phần tử web bằng các đối tượng chờ trình điều khiển hoặc trình điều khiển web sẽ dẫn đến một NoSuchElementhoặc TimeoutExceptiontương ứng.

Tôi đã cung cấp cho nhóm chromedriver một bản ghi trình điều khiển chrome dài dòng và họ đang làm việc với nó.

CẬP NHẬT : Từ vấn đề chromedriver 3223

Các nhật ký cho thấy việc thực hiện cuối cùngContextCreated cho khung không hoàn thành cho đến khi FindEuity trả về null. Bắt đầu từ phiên bản 77, ChromeDriver đã dừng chờ tất cả các khung tải trước khi tiếp tục điều hướng. Thật không may, sự thay đổi đó đã ngăn không cho khung hình hiện tại tải. 3164 tất cả sẽ chờ khung hình hiện tại tải; điều này sẽ ngăn FindEuity tìm kiếm cho đến khi khung đã dừng tải và execContext được tạo.

Về cơ bản, lỗi này đã được giới thiệu trong v.77. Nhiều người trong chúng tôi chỉ nhận thấy vấn đề này vì chúng tôi đã nâng cấp từ v.76 lên .v78. Có điều là họ đang nhắm mục tiêu sửa lỗi cho .v80 (không phải câu 79). Như một giải pháp thay thế, tôi đang sử dụng Thread.sleepgiữa thời gian tôi chuyển sang iframe và khi tôi cố gắng xác định vị trí thành phần. Cách giải quyết này hoạt động tốt. Thực tế, bạn có thể tự xác minh điều này bằng cách chạy ứng dụng của bạn ở chế độ DEBUG. Khi bạn tạm dừng thực thi (bằng cách sử dụng điểm dừng), bạn sẽ nhận thấy rằng mã gốc của mình (không có chế độ ngủ) hoạt động tốt.


0

Ví dụ: Bạn có thể thử sử dụng từ khóa này!.

1. implicit_wait=10
2. Sleep  10

Xin chào @Naraimhamurthy GN, cảm ơn bạn đã trả lời. Chờ đợi không phải là một vấn đề, tôi đang sử dụng tất cả các thử nghiệm và tôi không phải đối mặt với một vấn đề tương tự. Vấn đề là chromedriver (phiên bản 78) không thể tìm thấy bất kỳ yếu tố web nào trong pdf nhúng.
Trộn

Đối với tôi một số trường hợp thử nghiệm tôi cũng đã gặp phải vấn đề tương tự mà tôi đã sử dụng "geckodriver" (Firefox).
Narasimhamurthy GN

mặt khác sử dụng từ khóa định vị thư viện selenium khác nhau để tìm WebEuity.
Narasimhamurthy GN

Thật không may, chúng tôi khuyên người dùng ứng dụng web của chúng tôi sử dụng Chrome hoặc Internet Explorer, Firefox không được khuyến nghị vì một số lý do. Đó là lý do tại sao tôi không thể sử dụng Firefox để tự động hóa các bài kiểm tra. Tôi đã cố gắng sử dụng tất cả các cách có thể để tìm bất kỳ yếu tố web nào trên pdf bằng selen nhưng nó không hoạt động. Tôi cũng đã thử sử dụng các phụ thuộc và sắc ký khác nhau và không có gì hoạt động.
Trộn


0

Tôi gặp vấn đề tương tự.

Sau khi tự động cập nhật Chrome với phiên bản 78.0, tập lệnh kiểm tra tự động của tôi đã thất bại. Vì vậy, tôi đã cập nhật chromedriver lên phiên bản 78, nhưng trình điều khiển vẫn không thể tìm thấy bất kỳ yếu tố web nào. Sau đó, tôi đã thử với nhiều phiên bản của chromedriver và cuối cùng vấn đề của tôi đã được giải quyết với phiên bản chromedriver 2.44 .

Phiên bản này có thể được tìm thấy tại https://chromedriver.st Storage.googleapis.com/index.html?path=2.44/


-1

Bạn có thể quản lý gói Nuget , xóa ổ đĩa Chrome và tìm kiếm chrome, tải xuống phiên bản mới selenium.web.driver.ChromDriver >> cho jsaKamoto

ở đó bạn tìm thấy phiên bản chrome 78.


Cảm ơn phản hồi, nhưng nó không thực sự trả lời vấn đề ngoại lệ của NoSuchEuity trong phiên bản chrome 78.
wdtj
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.