Đây là tập tin docker của tôi.
TỪ nút:17.2.0
NGƯỜI DÙNG gốc
WORKDIR /LT
CHẠY bản cập nhật apt-get
CHẠY cài đặt apt-get git --yes
SAO CHÉP /LT .
SAO CHÉP /LT/kiểm tra .
SAO CHÉP ["/LT/package.json", "."]
# Cài đặt Google Chrome
CHẠY apt-get cài đặt wget
CHẠY wget https://dl.google.com/linux/direct/google-chrome-stable_current_AMD64.deb
CHẠY cài đặt apt-get ./google-chrome*.deb --yes
ENV CHROME_BIN=/usr/bin/google-chrome
CHẠY cài đặt npm
CHẠY npm ci
CHẠY npm cài đặt nodejs
CHẠY npm cài đặt mocha -g
CHẠY npm install chromedriver -g --unsafe-perm
CHẠY npm cài đặt Selenium-webdriver
CHẠY npm cài đặt trình quản lý web
#RUN bản cập nhật trình quản lý webdriver-manager
CMD ["nút", "./test/script1.js"]
Sau đây là tệp javascript nodejs của tôi sử dụng chrome để khởi chạy ứng dụng và đăng nhập.
yêu cầu ("trình điều khiển chrome");
const {By,Key,Builder} = require("Selenium-webdriver");
const chrome = require('selenium-webdriver/chrome');
chức năng không đồng bộ getAuthCode(){
const url = "https://abcd.com";
// Để đợi trình duyệt xây dựng và khởi chạy đúng cách
hãy để trình điều khiển = đang chờ Trình tạo mới ()
.forBrowser("cơm")
.setChromeOptions(chrome.Options().headless() mới)
//.setChromeOptions(new chrome.Options().addArguments(['--no-sandbox','-headless', '--disable-dev-shm-usage']))
.xây dựng();
đang đợi driver.get(url);
console.log(trình điều khiển);
const wait = ms => new Promise(resolve => setTimeout(resolve, ms));
chờ chờ (1 * 20 * 1000);
đang đợi driver.manage().window().setRect({ width: 1552, height: 840 });
đang đợi driver.findElement(By.id("emailInput")).click();
đang đợi driver.findElement(By.id("emailInput")).sendKeys("[email protected]");
đang đợi driver.findElement(By.id("submitbutton")).click();
chờ chờ (1 * 20 * 1000);
đang đợi driver.quit();
trả về 'một số dữ liệu';
}
chức năng không đồng bộ testAuthCode()
{
var cCode = đang chờ getAuthCode();
console.log(cCode);
}
testAuthCode();
Khi tôi chạy tệp soạn thảo docker của mình bằng cùng một tệp docker được cung cấp ở trên, tôi gặp lỗi sau.
WebDriverError: lỗi không xác định: Chrome không khởi động được: thoát bất thường.
-nodejs-1 | (lỗi không xác định: tệp DevToolsActivePort không tồn tại)
-nodejs-1 | (Quá trình bắt đầu từ vị trí chrome /usr/bin/google-chrome không còn chạy nữa, vì vậy ChromeDriver giả định rằng Chrome đã gặp sự cố.)
-nodejs-1 | tại Object.throwDecodedError (/LT/node_modules/Selenium-webdriver/lib/error.js:539:15)
Tôi biết lý do, Nó không thể tìm thấy chromedriver ở đường dẫn mặc định '/usr/bin/google-chrome'.
Một trong hai
- Tôi phải cài đặt chrome ở vị trí mặc định đã cho
Hoặc
- cung cấp đường dẫn của vị trí mà chrome thực sự được cài đặt.
Trong cả hai trường hợp, Làm cách nào để thực hiện điều đó trong JavaScript hoặc docker?
PS: Tập lệnh chạy hoàn toàn tốt trong môi trường cửa sổ cục bộ của tôi.