นี่คือไฟล์นักเทียบท่าของฉัน
จากโหนด:17.2.0
รากผู้ใช้
เวิร์คดีอาร์ /LT
RUN apt-รับการปรับปรุง
RUN apt-get install git -- ใช่
คัดลอก /LT
คัดลอก /LT/ทดสอบ
คัดลอก ["/LT/package.json", "."]
#ติดตั้ง Google Chrome
RUN apt-get ติดตั้ง wget
RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
RUN apt-get install ./google-chrome*.deb --ใช่
ENV CHROME_BIN=/usr/bin/google-chrome
ติดตั้ง RUN npm
เรียกใช้ npm ci
RUN npm ติดตั้ง nodejs
RUN npm ติดตั้ง mocha -g
RUN npm ติดตั้ง chromedriver -g --unsafe-perm
RUN npm ติดตั้ง selenium-webdriver
RUN npm ติดตั้ง webdriver-manager
อัพเดต #RUN webdriver-manager
CMD ["โหนด", "./test/script1.js"]
ต่อไปนี้คือไฟล์จาวาสคริปต์ nodejs ของฉันซึ่งใช้ chrome เพื่อเปิดแอปพลิเคชันและเข้าสู่ระบบ
ต้องการ ("Chromedriver");
const {โดย, คีย์, Builder} = ต้องการ ("ซีลีเนียม-webdriver");
const chrome = ต้องการ ('ซีลีเนียม-webdriver/chrome');
ฟังก์ชัน async getAuthCode(){
const url = "https://abcd.com";
// เพื่อรอให้เบราว์เซอร์สร้างและเปิดใช้งานอย่างถูกต้อง
ให้ไดรเวอร์ = รอตัวสร้างใหม่ ()
.forBrowser("โครม")
.setChromeOptions(ใหม่ chrome.Options().หัวขาด())
//.setChromeOptions(new chrome.Options().addArguments(['--no-sandbox','-headless', '--disable-dev-shm-usage']))
.สร้าง();
รอ driver.get (url);
console.log (ไดรเวอร์);
const wait = ms => new Promise(resolve => setTimeout(resolve, ms));
รอ รอ (1 * 20 * 1,000);
รอ driver.manage().window().setRect({ width: 1552, height: 840 });
รอ driver.findElement(By.id("emailInput")).click();
รอ driver.findElement(By.id("emailInput")).sendKeys("[email protected]");
รอ driver.findElement(By.id("submitbutton")).click();
รอ รอ (1 * 20 * 1,000);
รอไดรเวอร์ออกจาก ();
ส่งคืน 'ข้อมูลบางส่วน';
}
ฟังก์ชัน async testAuthCode()
{
var cCode = กำลังรอ getAuthCode();
console.log(โค้ด);
}
testAuthCode();
เมื่อฉันเรียกใช้ไฟล์เขียนนักเทียบท่าโดยใช้ไฟล์นักเทียบท่าเดียวกันกับที่ระบุข้างต้น ฉันได้รับข้อผิดพลาดดังต่อไปนี้
WebDriverError: ข้อผิดพลาดที่ไม่รู้จัก: Chrome ไม่สามารถเริ่มทำงาน: ออกอย่างผิดปกติ
-nodejs-1 | (ข้อผิดพลาดที่ไม่รู้จัก: ไม่มีไฟล์ DevToolsActivePort)
-nodejs-1 | (กระบวนการเริ่มต้นจากตำแหน่ง chrome /usr/bin/google-chrome ไม่ทำงานอีกต่อไป ดังนั้น ChromeDriver จึงถือว่า Chrome ขัดข้อง)
-nodejs-1 | ที่ Object.throwDecodedError (/LT/node_modules/selenium-webdriver/lib/error.js:539:15)
ฉันรู้สาเหตุ ไม่พบไดรเวอร์ chrome ที่เส้นทางเริ่มต้น '/usr/bin/google-chrome'
ทั้ง
- ฉันต้องติดตั้ง chrome ที่ตำแหน่งเริ่มต้นที่กำหนด
หรือ
- ให้เส้นทางของตำแหน่งที่ติดตั้ง Chrome จริง
ไม่ว่าในกรณีใด ฉันจะทำใน JavaScript หรือ docker ได้อย่างไร
PS: สคริปต์ทำงานได้ดีอย่างสมบูรณ์ในสภาพแวดล้อม windows ท้องถิ่นของฉัน