XVFB และ Selenium บน EC2 - ไม่สามารถดู Chrome UI บน VNC Viewer

Aug 20 2020

การทดสอบแบบไร้หัว Selenium ของฉันถูกเรียกใช้จากเซิร์ฟเวอร์ Jenkins และทำงานใน EC2-Ubuntu ฉันต้องการดูการทดสอบสดบน Chrome ดังนั้นฉันจึงติดตั้งปลั๊กอิน Xvfb บน Jenkins

บน EC2 ฉันติดตั้ง Xvfb เมื่อฉันเริ่มรันบิลด์การทดสอบของฉันจะเริ่มดำเนินการและฉันเห็นบันทึกด้านล่าง:

Xvfb /usr/bin/Xvfb :1 -fbdir /var/lib/jenkins/xvfb 27-..fbdir13700092919317283985

Parsing POMs
Established TCP socket on 30810

และฉันเห็นว่าการทดสอบทำงานได้สำเร็จ

ตอนนี้ฉันทำ SSH เป็น EC2 จากเครื่อง Mac โดย

ssh -L 5901:localhost:5901 [email protected]

จากนั้นฉันดำเนินการ:

qa_user@jenkins-it:~$ export DISPLAY=: 30810` (Port number from Jenkins logs above) qa_user@jenkins-it:~$ vncserver "$DISPLAY" -geometry 1280x1024 New 'X' desktop is jenkins-it: 30810 Starting applications specified in /home/qa_user/.vnc/xstartup Log file is /home/qa_user/.vnc/jenkins-it: 30810.log qa_user@jenkins-it:~$ x11vnc --listen 0.0.0.0 -rfbport 5901 -display : 30810

สิ่งนี้เริ่มต้น XVFB และฉันเห็น:

ตอนนี้เมื่อฉันเชื่อมต่อจาก Mac ไปยัง localhost: 5901 จาก VNCviewer ฉันถูกนำไปที่เดสก์ท็อป Ubuntu

แต่ฉันไม่เห็นโครเมี่ยมเปิดขึ้นแม้ว่าการทดสอบกำลังดำเนินอยู่และฉันเห็นบันทึกการทดสอบใน Jenkins

ฉันยังสามารถใช้ Chrome ผ่าน VncViewer

ฉันขาดอะไรไปที่นี่? ฉันลองใช้คำแนะนำในการตั้งค่า Xvfb มากมายและพยายามทำให้ถูกต้องมาตั้งแต่หนึ่งเดือนแล้ว นี่คือคำถามสองสามข้อที่ฉันถาม:

https://askubuntu.com/questions/1262925/run-selenium-tests-on-ec2-with-gui?noredirect=1#comment2139716_1262925

วิธีดูการทดสอบซีลีเนียมแบบไม่มีหัวบน EC2-Ubuntu โดยใช้ vncserver และ xvfb

https://sqa.stackexchange.com/questions/45376/looking-for-a-solution-to-run-selenium-tests-on-ec2-with-gui/45380#45380

ทางยาวจนถึงที่นี่และตอนนี้ Stackoverflow เป็นทางเลือกสุดท้ายของฉัน กรุณาช่วย.

คำตอบ

1 Afsal Sep 21 2020 at 05:52

ฉันพบวิธีแก้ปัญหานี้ด้วยตัวเอง สำหรับใครก็ตามที่มีปัญหาเดียวกัน:

สิ่งที่ฉันทำผิดคือฉันใช้driver = new ChromeDriver(options);รหัสแทนdriver = new RemoteWebDriver(new URL("http://my.aws.ip:4444/wd/hub"), options);

หลังจากทำการเปลี่ยนแปลงนี้ฉันดาวน์โหลด selenium-server-standalone.jar เป็นใน EC2

จากนั้นก่อนเริ่มการทดสอบฉันได้ ssh -X [email protected] ถึง EC2 และดำเนินการ:

Xvfb :99 -ac -screen 0 1280x1024x24 &
export DISPLAY=:99
java -jar /home/qa_user/Selenium/selenium-server-standalone.jar

ตอนนี้ดำเนินการทดสอบพร้อมกันฉันเปิดเทอร์มินัลใหม่และทำ:

ssh -L 5900:localhost:5900 [email protected]

เมื่อตั้งค่าหน้าจอแล้วฉันก็:

x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :99 -auth /var/run/lightdm/root/:0  -rfbport 5900

จากนั้นเปิดโปรแกรมดู VNC เชื่อมต่อกับ localhost: 5900 แล้วคุณจะเห็นการทำงานของ Chrome

หลังจากนั้นคุณสามารถย้ายทั้งหมดนี้ไปยังเชลล์ที่สร้างไว้ล่วงหน้าของเจนกินส์ได้หากจำเป็น :)

รายละเอียดเพิ่มเติมเกี่ยวกับคำตอบล่าสุดของฉัน: XVFB บน Jenkins เชื่อมต่อกับจอแสดงผลที่ไม่ถูกต้อง หน้าจอแสดงหน้าจอสีดำ