ปัญหาที่เป็นไปได้กับ Chromedriver 78, Selenium ไม่พบองค์ประกอบของเว็บของ PDF ที่เปิดใน Chrome


17

จนกว่า Google Chrome ของฉันจะไม่ได้รับการอัปเดตเป็นรุ่น 78 รหัสของฉันทำงานได้ดี ฉันยังอัปเดต Chromedriver เป็นเวอร์ชัน 78.0.3904.70 ดังนั้นฉันไม่สามารถหา WebElement ด้วย id = 'plugin' อีกต่อไปโดยใช้ Selenium WebDriver และ 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>

นอกเหนือจากนั้นการทดสอบของฉันก็ใช้งานได้ดี ฉันไม่เคยมีปัญหาที่คล้ายกันมาก่อน ฉันพยายามค้นหา WebElement id = 'content' แต่ฉันได้รับข้อผิดพลาดเดียวกัน

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

สคริปต์อัตโนมัติของฉันควรค้นหาองค์ประกอบ PDF และเลื่อนหน้าลง แต่ฉันได้รับข้อผิดพลาดนี้: org.openqa.selenium.TimeoutException: หมดเวลาหลังจาก 90 วินาทีเพื่อรอการมองเห็นองค์ประกอบที่อยู่โดย By.id: ปลั๊กอิน

มีใครประสบปัญหาที่คล้ายกันหรือไม่ ขอบคุณล่วงหน้า.


วันนี้ฉันลบ Google Chrome รุ่น 78 และติดตั้งรุ่น 76 และการทดสอบระบบอัตโนมัติของฉันทำงานอีกครั้ง ทุกอย่างทำงานได้อย่างสมบูรณ์ ฉันหวังว่าปัญหานี้กับเวอร์ชัน 78 จะได้รับการแก้ไข ดังนั้นฉันจึงใช้ Chromedriver (เวอร์ชัน 78) และในไฟล์. pom ของฉันฉันมีการพึ่งพาต่อไปนี้: <dependency> <groupId> org.seleniumhq.selenium </groupId> <artifactId> selenium-chrome-driver </artifactId>version> 3.141.59 </version> </dependency>
ผสม

ฉันมีปัญหาเดียวกัน โค้ดที่ใช้งานมาก่อนตอนนี้ล้มเหลวเนื่องจากโปรแกรมควบคุมเว็บไม่สามารถค้นหาองค์ประกอบของเว็บใด ๆ ที่ฉันพยายามค้นหา การรอโดยปริยายและชัดแจ้งล้มเหลวเหมือนกัน สิ่งที่ฉันไม่สามารถระบุได้คือประเภทขององค์ประกอบที่มีปัญหาหรือเป็นเพียงส่วนประกอบที่อยู่ใน iframe เพื่อเป็นการหลีกเลี่ยงปัญหาฉันได้เพิ่มThread.sleepสถานที่ที่ฉันรอโดยนัยหรือชัดเจนก่อนการอัปเดตนี้
hfontanez

Chrome 78 พร้อม Chromedriver 77 ใช้ได้สำหรับฉัน
Yun

คำตอบ:


5

ฉันพบปัญหาเดียวกัน

เห็นได้ชัดว่า Chrome อัปเดตตัวเองโดยอัตโนมัติ เมื่อวานนี้ (29 ต.ค. 19) ChromeDriver ของฉันเริ่มบ่นว่ามันเข้ากันไม่ได้กับ Chrome 78 ฉันได้อัปเดตไดรเวอร์เป็นรุ่น 78 แล้ว ฉันเริ่มได้รับการสุ่ม org.openqa.selenium.NoSuchElementException ข้อยกเว้นเมื่อพยายามหาองค์ประกอบที่ฉันยืนยันอยู่ที่นั่น findElement [s] ยังทำงานเมื่อฉันใช้เบรกพอยต์ ฉันก็ลองรอโดยปริยายด้วยความสำเร็จที่ จำกัด

ฉันลองใช้โซลูชัน ChromeOption ของ zsbappa แต่ไม่มีความสุข

Google ทำให้มันยากที่จะได้รับรุ่นเก่าของ Chrome แต่ผมพบว่ารุ่น 76 ในhttps://www.neowin.net/news/google-chrome-76-offline-installer/ ระวังตัวติดตั้งออนไลน์จะติดตั้งเวอร์ชันล่าสุด ฉันหวนกลับไปที่ไดรเวอร์สำหรับ 76 และทั้งหมดเป็นสิ่งที่ดี การทดสอบซีลีเนียมทั้งหมดของฉันทำงานได้อีกครั้ง

ข้อสรุปของฉันคือ Chrome 78 และผู้ขับขี่ที่เกี่ยวข้องมีสภาพการแข่งขันที่ซีลีเนียมพยายามสอบถามหน้าเว็บก่อนที่จะเสร็จสมบูรณ์


ฉันเปิดฉบับ 3198 ด้วยนักพัฒนา ChromeDriver แล้ว
wdtj

1
ฉันได้รับการตอบสนองต่อปัญหาของฉันดังต่อไปนี้: ขอบคุณที่รายงานปัญหานี้ ตั้งแต่เวอร์ชัน 77, Chromedriver ไม่รอให้เฟรมหรือ iframe โหลดเมื่อไปยังหน้าใหม่หรือสลับหน้าต่าง สิ่งนี้จะแนะนำความจำเป็นในการรอรหัสเพื่อให้ทรัพยากรพร้อมใช้งาน การผูกส่วนใหญ่มีการรออย่างชัดเจนรวมถึงการตั้งค่าการรอโดยนัย ค้นหา WebDriverWait ในเอกสาร Selenium สำหรับข้อมูลเพิ่มเติม
wdtj

แต่เรากำลังรออย่างชัดเจนและไม่ได้ช่วยอะไร มันจะช่วยในการเปลี่ยน iframe แต่แท็ก HTML จะไม่ปรากฏอีกต่อไปสำหรับ pdf ฝัง
มิกซ์

ฉันเปิดปัญหาใหม่ในกลุ่มChromedriver
มิกซ์

คุณสามารถใช้ Chromium สำหรับการทดสอบเป็นเวอร์ชันพื้นฐานของ Chrome ที่ไม่มีบริการของ Google มันจะไม่อัปเดตตัวเองและทำงานได้ดีกับ Chromedriver: chromium.org/getting-involved/download-chromium
Blaise

3

เราประสบปัญหาคล้ายกันกับ Chrome 78.0.3904.7, Chromedriver 77/78, Python Selenium 3.141.0

ในการทดสอบ Python Selenium อัตโนมัติของเราเราได้เห็นความล้มเหลวหลายครั้งซึ่งปรากฏว่าไม่มีการคลิกองค์ประกอบ แม้เป็นคนแปลกหน้าดูเหมือนว่าองค์ประกอบจะเริ่มทำงาน (ราวกับกำลังจะคลิก) แต่เหตุการณ์การคลิกจริงไม่เคยเกิดขึ้น เป็นผลให้สวิตช์หน้า ฯลฯ ไม่เกิดขึ้นทำให้เกิดความล้มเหลวในการดาวน์สตรีมต่างๆ

จากกระบวนการติดตามและข้อผิดพลาดเราพบว่าการใช้ฟังก์ชั่นมาตรฐาน. คลิก () ไม่น่าเชื่อถือ:

webdriver_element.click()

แต่การใช้ Action Chains ดูเหมือนจะเชื่อถือได้:

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

ยังไม่ชัดเจนว่าทำไมในกรณีนี้ ความล้มเหลวเริ่มขึ้นทันทีที่เราอัปเกรดเป็น Chrome 78.0.3904.7 เรากำลังใช้ Chromedriver 77.0.3865.90 แต่การทดสอบเดียวกันส่งผ่านได้อย่างน่าเชื่อถือใน Chrome 77.x เวอร์ชันดังนั้นจึงดูเหมือนว่ามีบางอย่างผิดปกติหรือมีการเปลี่ยนแปลงใน Chrome 78


มันช่วยฉันได้ไม่น้อยเลยขอบคุณ
Piedone

1

ด้วยการเพิ่มอาร์กิวเมนต์ต่อไปนี้ฉันได้แก้ไขปัญหาของฉันแล้ว

   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! ขอบคุณสำหรับการตอบกลับของคุณ. อย่างไรก็ตามนี่ไม่ได้แก้ปัญหาของฉัน ปัญหาคือ Chromedriver (รุ่น 78) ไม่สามารถหาองค์ประกอบของเว็บใด ๆ ในรูปแบบไฟล์ PDF แบบฝัง ฟังก์ชั่นนี้ใช้งานได้ดีจนกระทั่ง Google chrome ไม่ได้รับการอัปเดตเป็นเวอร์ชัน 78 PS ฉันไม่ได้ทำการทดสอบในโหมดหัวขาด
ผสม

ยังไม่ชัดเจนว่าตัวเลือกเหล่านี้แก้ปัญหา OP ได้อย่างไร
Cal Corbin

นี่ไม่ได้แก้ปัญหา เป็นไปได้มากว่าคุณกำลังเรียกใช้สถานการณ์ที่องค์ประกอบของเว็บไม่ได้อยู่ใน iframe
hfontanez

1

ฉันประสบปัญหาเดียวกันเมื่อพยายามเข้าถึงแท็บภายใน iframe มันใช้งานได้ดีในเวอร์ชัน 76 ตอนนี้ที่อัปเดตตัวเองเป็น 78 แล้วก็ล้มเหลว ลองแล้วรอโดยปริยายรอหลับค้นหาองค์ประกอบโดยใช้ xpath, CSS, id, สลับบริบทเลื่อนไปจนถึงมุมมอง ฯลฯ โดยไม่มีโชค ฉันใช้ windows 10, 1809 ฉันไม่รู้ว่าสิ่งนี้เกิดขึ้นในระบบปฏิบัติการอื่นหรือไม่

นี่คือคำถามที่ฉันยก:

ปัญหาในการใช้ Chromedriver 78.0.3904.70 locators


1

ฉันยืนยันเมื่อวานนี้ว่าปัญหานี้จะปรากฏขึ้นเองเมื่อองค์ประกอบอยู่ใน iframe เท่านั้น ในกรณีดังกล่าว iframe จะอยู่ที่ดี อย่างไรก็ตามการพยายามค้นหาองค์ประกอบเว็บโดยใช้ไดรเวอร์หรือไดรเวอร์เว็บรอวัตถุจะส่งผลในNoSuchElementหรือTimeoutExceptionตามลำดับ

ฉันให้ทีมงาน Chromedriver บันทึกการทำงานของไดรเวอร์ Chrome แบบละเอียดและพวกเขากำลังทำงานอยู่

อัปเดต : จากปัญหา Chromedriver 3223

บันทึกแสดงให้เห็นว่าการดำเนินการขั้นสุดท้ายContextCreatedสำหรับเฟรมยังไม่เสร็จสมบูรณ์จนกว่า FindElement จะส่งกลับค่าว่าง เริ่มต้นในเวอร์ชัน 77 ChromeDriver หยุดรอให้โหลดเฟรมทั้งหมดก่อนการนำทางต่อ น่าเสียดายที่การเปลี่ยนแปลงดังกล่าวทำให้การรอเฟรมปัจจุบันโหลด 3164 จะรอให้เฟรมปัจจุบันโหลด; สิ่งนี้ควรป้องกัน FindElement จากการค้นหาจนกระทั่งหลังจากเฟรมหยุดโหลดแล้วและ executionContext จะถูกสร้างขึ้น

โดยพื้นฐานแล้วข้อผิดพลาดนี้ถูกนำมาใช้ใน v.77 พวกเราหลายคนเพิ่งสังเกตเห็นปัญหานี้เพราะเราอัพเกรดจาก v.76 เป็น. v78 Word คือพวกเขากำลังกำหนดเป้าหมายการแก้ไขสำหรับ. v80 (ไม่ใช่ v. 79) เพื่อหลีกเลี่ยงปัญหาฉันใช้Thread.sleepระหว่างเวลาที่ฉันเปลี่ยนไปใช้ iframe และเมื่อฉันพยายามค้นหาส่วนประกอบ วิธีแก้ปัญหานี้ใช้งานได้ดี ในความเป็นจริงคุณสามารถตรวจสอบได้ด้วยตัวเองโดยเพียงแค่เรียกใช้แอปพลิเคชันของคุณในโหมด DEBUG เมื่อคุณหยุดการทำงานชั่วคราว (โดยใช้เบรกพอยต์) คุณจะสังเกตเห็นว่ารหัสเดิม (โดยไม่ต้องนอนหลับ) ทำงานได้ดี


0

ตัวอย่างเช่นคุณสามารถลองใช้คำหลักนี้!

1. implicit_wait=10
2. Sleep  10

สวัสดี @Narasimhamurthy GN ขอขอบคุณสำหรับคำตอบของคุณ การรออย่างชัดเจนไม่ใช่ปัญหาฉันใช้ Explicit Waits ตลอดการทดสอบและฉันไม่ประสบปัญหาคล้ายกัน ปัญหาคือ Chromedriver (รุ่น 78) ไม่สามารถหาองค์ประกอบของเว็บใด ๆ ในรูปแบบไฟล์ PDF แบบฝัง
ผสม

สำหรับฉันกรณีทดสอบบางอย่างฉันได้ประสบปัญหาเดียวกันสำหรับที่ฉันใช้ "geckodriver" (Firefox)
Narasimhamurthy GN

มิฉะนั้นให้ใช้คำหลักซีลีเนียมไลบรารี่ต่าง ๆ ในการค้นหา WebElement
Narasimhamurthy GN

น่าเสียดายที่ขอแนะนำให้ผู้ใช้เว็บแอปพลิเคชันของเราใช้ Chrome หรือ Internet Explorer ไม่แนะนำให้ใช้ Firefox ด้วยเหตุผลบางประการ นั่นคือเหตุผลที่ฉันไม่สามารถใช้ Firefox เพื่อทำการทดสอบอัตโนมัติ ฉันพยายามใช้วิธีที่เป็นไปได้ทั้งหมดเพื่อค้นหาองค์ประกอบของเว็บใน pdf โดยใช้ซีลีเนียม แต่มันไม่ทำงาน ฉันยังลองใช้เครื่องมือพึ่งพาและ Chromedrivers ที่แตกต่างกันและไม่มีอะไรทำงาน
มิกซ์


0

ฉันมีปัญหาเดียวกัน

หลังจากอัปเดต Chrome ด้วยเวอร์ชัน 78.0 โดยอัตโนมัติสคริปต์ทดสอบอัตโนมัติของฉันล้มเหลว ดังนั้นฉันจึงอัปเดต Chromedriver เป็นรุ่น 78 แต่ไดรเวอร์ยังไม่สามารถหาองค์ประกอบของเว็บได้ หลังจากนั้นฉันพยายามกับหลายรุ่นของ chromedriver และในที่สุดปัญหาของฉันได้รับการแก้ไขด้วย chromedriver รุ่น 2.44

รุ่นนี้สามารถพบได้ที่https://chromedriver.storage.googleapis.com/index.html?path=2.44/


-1

คุณสามารถจัดการแพคเกจNuget ลบไดรฟ์ Chrome และค้นหา chrome ดาวน์โหลดselenium.web.driver.ChromeDriverเวอร์ชันใหม่>> สำหรับ jsaKamoto

ที่นั่นคุณพบ chrome รุ่น 78


ขอบคุณสำหรับการตอบกลับ แต่ไม่ได้ตอบปัญหาข้อยกเว้น NoSuchElement จริง ๆ ใน chrome รุ่น 78
wdtj
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.