• 解决linux 运行自动化脚本浏览器无法启动问题


    1.前提你的驱动和版本对应无问题时,依旧报未知错误无法启动chrome

    解决方法加上两行:

    options.addArguments("no-sandbox");
    options.addArguments("--disable-gpu");

    其中
    “–no-sandbox”参数是让Chrome在root权限下跑
    “–headless”参数是不用打开图形界面

    奉上我的TestNg源码:

    package com.chen.autocases;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.chrome.ChromeOptions;
    import org.testng.annotations.AfterClass;
    import org.testng.annotations.BeforeClass;
    import org.testng.Assert;
    import org.testng.annotations.Test;
    import org.openqa.selenium.WebDriver;
    import org.apache.log4j.Logger;
    
    import java.util.concurrent.TimeUnit;
    
    public class TestDemo {
        private static Logger log = Logger.getLogger(TestDemo.class);
        public WebDriver driver;
        /*
        @param
            import java.util.HashMap;
            import java.util.Map;
            options.addArguments("--disable-popup-blocking"); // 禁用阻止弹出窗口
            options.addArguments("no-sandbox"); // 启动无沙盒模式运行
            options.addArguments("disable-extensions"); // 禁用扩展
            options.addArguments("no-default-browser-check"); // 默认浏览器检查
            Map<String, Object> prefs = new HashMap();
            prefs.put("credentials_enable_service", false);
            prefs.put("profile.password_manager_enabled", false);
            options.setExperimentalOption("prefs", prefs);// 禁用保存密码提示框
    
            */
    
        @BeforeClass
        public void beforeClass() {
            System.setProperty("webdriver.chrome.driver", "/usr/local/chrome/chromedriver");
            ChromeOptions options = new ChromeOptions();
            options.setHeadless(Boolean.TRUE);
    		options.addArguments("no-sandbox");
            options.addArguments("--disable-gpu");
            options.addArguments("--start-maximized"); // 启动时自动最大化窗口
            driver = new ChromeDriver(options);
            driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
            driver.get("http://www.baidu.com");
            log.info("用例开始执行------");
        }
        @AfterClass
        public void afterClass(){
                log.info("用例结束后运行----");
                driver.quit();
              }
    
        @Test
        public void testcase1(){
            log.info("testcase1");
            Assert.assertTrue(true);
    
        }
        @Test
        public void testcase2(){
            Assert.assertTrue(true);
            log.debug("testcase2");
        }
    }
    

      

  • 相关阅读:
    谷歌浏览器network请求时间(stalled,DNS Lookup,Waiting)分析以及解决方案
    Maven项目下启动后Eclipse报错:org.springframework.web.context.ContextLoaderListener
    探讨ES6的import export default 和CommonJS的require module.exports
    Node.js+websocket+mongodb实现即时聊天室
    slider轮播插件的多种写法
    原生canvas写的飞机游戏
    vue父组件如何向子组件中传递数据?
    vue计算属性VS侦听属性
    vue等单页面应用优缺点
    vue自定义过滤器的创建与使用
  • 原文地址:https://www.cnblogs.com/SunshineKimi/p/10803990.html
Copyright © 2020-2023  润新知