2014-02-08 2 views
3

Я пишу программу для веб-автоматизации, и до сих пор она отлично работает с использованием FirefoxDriver от Selenium. Тем не менее, я хочу использовать Chrome, если Firefox не установлен. Я загрузил ChromeDriver, поместил его в папку в своем проекте Eclipse и запустил его. После того, как я добавил System.setProperty("webdriver.chrome.driver", "Drivers/chromedriver.exe");, он работал нормально. Однако, когда я пытаюсь экспортировать его (используя стандартный экспорт Eclipse). Он терпит крах, я считаю, потому что он не может найти ChromeDriver (я думаю, это потому, что экспорт его с FirefoxDriver отлично работает).Как включить ChromeDriver в JAR?

Я попытался изменить .JAR на .ZIP, чтобы заглянуть внутрь, и я вижу, что папка driver была удалена, просто положив chromedriver.exe внутри верхнего уровня JAR. Я попытался изменить свойство на System.setProperty("webdriver.chrome.driver", "chromedriver.exe");, но все равно сбой.

Кто-нибудь знает, почему экспортированный JAR не может найти chromeDriver, несмотря на то, что я проверил, что он находится в JAR?

Спасибо, Daniel

+0

Это кажется немного глупым, чтобы спросить, но у вас есть «Chromedriver.exe», но он указан как нижний регистр «chromedriver.exe». Вы пытались изменить его до нижнего регистра? –

+0

Простая опечатка, исправлена. (В моем фактическом коде это везде) – DaniChan

+0

Чтобы быть понятным, это не устраняет вашу актуальную проблему? –

ответ

0

Это в Jar, но не может быть выполнена (то же самое, как пытаться запустить exe-файл из архива), вы должны извлечь его перед запуском

+0

Хорошо, как бы я это сделал? – DaniChan

+0

См. Пример здесь: http://stackoverflow.com/questions/12531766/run-exe-file-from-inside-jar – Ittiel

+0

СПАСИБО! Это сработало! У меня была небольшая проблема, где поместить «хромированный реверс», чтобы его можно было найти, но это было исправлено, когда я положил его в папку 'src'. Еще раз спасибо! – DaniChan

1

Экспорт кода как банку без хромированного ребра. Создайте папку ChromeDriver. Поместите файл chromedriver.exe в эту папку. Поместите папку ChromeDriver вместе со своей банкой.

DonT Также забудьте установить свойство системы в коде

System.setProperty("webdriver.chrome.driver", "ChromeDriver/chromedriver.exe"); 

Пожалуйста, дайте мне знать, если это работает для вас.

+0

Хотя я не вижу причин, почему это не сработает, я действительно хотел бы иметь возможность разрешить пользователю загружать только один тип файла. Этот метод должен работать, хотя 'jar' больше не будет самодостаточным. – DaniChan

2

вы должны извлечь его перед запуском. Скопируйте ваш драйвер под src/resources/drivers/chromedriver.exe

Теперь, когда вы запускаете этот код, он создаст новую папку «Драйвер», где когда-либо вы помещаете свою Runnable jar и копируете свой драйвер, к которому вы можете получить доступ ,

ClassLoader classLoader = getClass().getClassLoader(); 
       URL resource = classLoader.getResource("resources/drivers/chromedriver.exe"); 
       File f = new File("Driver"); 
       if (!f.exists()) { 
        f.mkdirs(); 
       } 
       File chromeDriver = new File("Driver" + File.separator + "chromedriver.exe"); 
       if (!chromeDriver.exists()) { 
        chromeDriver.createNewFile(); 
        org.apache.commons.io.FileUtils.copyURLToFile(resource, chromeDriver); 
       } 
       System.setProperty("webdriver.chrome.driver", chromeDriver.getAbsolutePath()); 
       driver = new ChromeDriver(); 
Смежные вопросы