在这篇文章中,我们将带领您了解如何配置ChromeDriver通过Selenium以无头模式启动Chrome浏览器?的全貌,包括chrome无头模式的相关情况。同时,我们还将为您介绍有关3-Pytho
在这篇文章中,我们将带领您了解如何配置ChromeDriver通过Selenium以无头模式启动Chrome浏览器?的全貌,包括chrome 无头模式的相关情况。同时,我们还将为您介绍有关3-Python爬虫-动态HTML/Selenium+PhantomJS/chrome无头浏览器-chromedriver、Chrome浏览器通过Pythonselenium自动更新时如何使用特定版本的ChromeDriver、org.openqa.selenium.chrome.ChromeDriver的实例源码、python+selenium启动chrome浏览器失败的知识,以帮助您更好地理解这个主题。
本文目录一览:- 如何配置ChromeDriver通过Selenium以无头模式启动Chrome浏览器?(chrome 无头模式)
- 3-Python爬虫-动态HTML/Selenium+PhantomJS/chrome无头浏览器-chromedriver
- Chrome浏览器通过Pythonselenium自动更新时如何使用特定版本的ChromeDriver
- org.openqa.selenium.chrome.ChromeDriver的实例源码
- python+selenium启动chrome浏览器失败
如何配置ChromeDriver通过Selenium以无头模式启动Chrome浏览器?(chrome 无头模式)
我正在研究用于网络抓取的python脚本,并且没有使用Chromedriver作为软件包之一。我希望此操作无需任何弹出窗口即可在后台运行。我在chromedriver上使用了“无头”选项,它似乎在不显示浏览器窗口的情况下完成了工作,但是,我仍然看到.exe文件正在运行。查看我在说什么的屏幕截图。屏幕截图
这是我用来启动ChromeDriver的代码:
options = webdriver.ChromeOptions()options.add_experimental_option("excludeSwitches",["ignore-certificate-errors"])options.add_argument(''headless'')options.add_argument(''window-size=0x0'')chrome_driver_path = "C:\Python27\Scripts\chromedriver.exe"
我尝试做的事情是将选项中的窗口大小更改为0x0,但我不确定这样做是什么,因为.exe文件仍然弹出。
关于如何执行此操作的任何想法?
我正在使用Python 2.7 FYI
答案1
小编典典因此,在将我的代码更正为:
options = webdriver.ChromeOptions()options.add_experimental_option("excludeSwitches",["ignore-certificate-errors"])options.add_argument(''--disable-gpu'')options.add_argument(''--headless'')chrome_driver_path = "C:\Python27\Scripts\chromedriver.exe"
运行脚本时,仍然会出现.exe文件。尽管这确实摆脱了一些额外的输出,告诉我“无法启动GPU进程”。
最终的工作是使用.bat文件运行我的Python脚本
所以基本上
- 如果文件夹保存python脚本
- 打开文本编辑器,然后转储以下代码(当然,请编辑您的脚本)
c:\ python27 \ python.exe c:\ SampleFolder \ ThisIsMyScript.py%*
保存.txt文件并将扩展名更改为.bat
双击运行文件
因此,这只是在命令提示符中打开了脚本,ChromeDriver似乎可以在此窗口中运行,而不会弹出到屏幕的前面,从而解决了问题。
3-Python爬虫-动态HTML/Selenium+PhantomJS/chrome无头浏览器-chromedriver
动态HTML
爬虫跟反爬虫
动态HTML介绍
- JavaScrapt
- jQuery
- Ajax
- DHTML
- Python采集动态数据
- 从Javascript代码入手采集
- Python第三方库运行JavaScript,直接采集你在浏览器看到的页面
Selenium + PhantomJS
- Selenium: web自动化测试工具
- 自动加载页面
- 获取数据
- 截屏
- 安装: pip install selenium==2.48.0
- 官网: http://selenium-python.readthedocs.io/index.html
- PhantomJS(幽灵)
- 基于Webkit 的无界面的浏览器
- 官网: http://phantomjs.org/download.html
- Selenium 库有有一个WebDriver的API
- WebDriver可以跟页面上的元素进行各种交互,用它可以来进行爬取
- 案例 v36
- chrome + chromedriver
- 下载安装chrome: 下载+安装
- 下载安装chromedriver:
- Selenium操作主要分两大类:
- 得到UI元素
- find_element_by_id
- find_elements_by_name
- find_elements_by_xpath
- find_elements_by_link_text
- find_elements_by_partial_link_text
- find_elements_by_tag_name
- find_elements_by_class_name
- find_elements_by_css_selector
- 基于UI元素操作的模拟
- 单击
- 右键
- 拖拽
- 输入
- 可以通过导入ActionsChains类来做到
- 案例37
- 得到UI元素
案例v36
''''''
通过webdriver操作进行查找1
''''''
from selenium import webdriver
import time
# 通过Keys模拟键盘
from selenium.webdriver.common.keys import Keys
# 操作哪个浏览器就对哪个浏览器建一个实例
# 自动按照环境变量查找相应的浏览器
driver = webdriver.PhantomJS()
# 如果浏览器没有在相应环境变量中,需要指定浏览器位置
driver.get("http://www.baidu.com")
# 通过函数查找title标签
print("Title: {0}".format(driver.title))
案例v37
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
# 可能需要手动添加路径
driver = webdriver.Chrome()
url = "http://www.baidu.com"
driver.get(url)
text = driver.find_element_by_id(''wrapper'').text
print(text)
print(driver.title)
# 得到页面的快照
driver.save_screenshot(''index.png'')
# id="kw" 的是百度的输入框,我们得到输入框的ui元素后直接输入“大熊猫"
driver.find_element_by_id(''kw'').send_keys(u"大熊猫")
# id="su"是百度搜索的按钮,click模拟点击
driver.find_element_by_id(''su'').click()
time.sleep(5)
driver.save_screenshot("daxiongmao.png")
#获取当前页面的cookie
print(driver.get_cookies())
# 模拟输入两个按键 ctrl+ a
driver.find_element_by_id(''kw'').send_keys(Keys.CONTROL, ''a'')
#ctr+x 是剪切快捷键
driver.find_element_by_id(''kw'').send_keys(Keys.CONTROL, ''x'')
driver.find_element_by_id(''kw'').send_keys(u''航空母舰'')
driver.save_screenshot(''hangmu.png'')
driver.find_element_by_id(''su'').send_keys(Keys.RETURN)
time.sleep(5)
driver.save_screenshot(''hangmu2.png'')
# 清空输入框 , clear
driver.find_element_by_id(''kw'').clear()
driver.save_screenshot(''clear.png'')
# 关闭浏览器
driver.quit()
selenium自动化测试 工具:
-用selenium登录的时候,先要get到页面; -get到页面之后就可以准备输入了, -selenium可以模拟输入; -selenium调没有界面的chrome或者PhantomJS -保存快照,手动输入,对静态验证码的一大杀手。
Chrome浏览器通过Pythonselenium自动更新时如何使用特定版本的ChromeDriver
如何解决Chrome浏览器通过Pythonselenium自动更新时如何使用特定版本的ChromeDriver?
,除了更新 ChromeDriver 二进制版本外,没有其他选择,而 Chrome浏览器 会不断自动更新。
原因
在添加,修改和删除现有功能后,会释放每个 Chrome浏览器 。为了符合当前的 浏览器功能 集, Chrome团队 会不时发布兼容的ChromeDriver 二进制文件。这些 ChromeDriver 二进制文件能够与 Chrome浏览器 进行交互。某些版本的ChromeDriver 二进制文件支持特定范围的 Chrome浏览器 版本(某些是最新版本),如下所示:
-
ChromeDriver v (2020-05-28)
Supports Chrome version 84
-
ChromeDriver v (2020-05-05)
Supports Chrome version 83
-
ChromeDriver v 被 故意 跳过。
-
ChromeDriver v (2020-05-05)
Supports Chrome version 81
-
ChromeDriver v (2020-02-13)
Supports Chrome version 80
-
ChromeDriver v (2019-11-18)
Supports Chrome version 79
-
ChromeDriver v (2019-10-21)
Supports Chrome version 78
-
ChromeDriver v (2019-08-20)
Supports Chrome version 77
-
ChromeDriver v (2019-08-20)
Supports Chrome version 76
-
ChromeDriver v (2019-04-29)
Supports Chrome version 75
-
ChromeDriver v (2019-03-14)
Supports Chrome version 74
-
ChromeDriver v (2019-03-06)
Supports Chrome version 73
-
ChromeDriver v (2019-02-01)
Supports Chrome v71-73
-
ChromeDriver v (2018-12-10)
Supports Chrome v70-72
-
ChromeDriver v (2018-11-19)
Supports Chrome v69-71
-
ChromeDriver v (2018-10-16)
Supports Chrome v69-71
-
ChromeDriver v (2018-09-13)
Supports Chrome v68-70
-
ChromeDriver v (2018-07-27)
Supports Chrome v67-69
-
ChromeDriver v (2018-06-07 )
Supports Chrome v66-68
-
ChromeDriver v (2018-05-30)
Supports Chrome v66-68
-
ChromeDriver v (2018-04-17 )
Supports Chrome v65-67
-
ChromeDriver v (2018-03-16 )
Supports Chrome v64-66
-
ChromeDriver v (2018-03-02 )
Supports Chrome v63-65
-
ChromeDriver v (2018-01-10 )
Supports Chrome v62-64
-
ChromeDriver v (2017-12-10 )
Supports Chrome v61-63
-
ChromeDriver v (2017-10-03)
Supports Chrome v60-62
-
ChromeDriver v (2017-08-30)
Supports Chrome v59-61
-
ChromeDriver v (2017-07-21)
Supports Chrome v58-60
-
ChromeDriver v (2017-06-07)
Supports Chrome v58-60
-
ChromeDriver v (2017-04-04)
Supports Chrome v56-58
结论
要使脚本/程序与更新的 Chrome浏览器 保持交互,您必须根据 兼容性将ChromeDriver 二进制版本与 Chrome浏览器 保持同步。
解决方法
我是Selenium的新手,现在可以将selenium与Chromedriver一起使用以进行基本的自动测试,代码可以正常工作,但问题是Chrome浏览器始终在后端自动更新,并且代码始终在Chrome更新后无法运行。我知道我需要下载新的chromedriver来解决此问题,但是我想知道是否有任何方法可以在不禁用chromebrowser更新的情况下解决此问题?tks。
我正在使用Windows 10 / Chrome版本67 / Python 3.6.4 / Selenium 3.12.0
org.openqa.selenium.chrome.ChromeDriver的实例源码
public static WebDriver getDriver() { String browser = System.getenv("broWSER"); if (browser == null) { ChromeDriverManager.getInstance().setup(); return new ChromeDriver(); } switch (browser) { case "IE": InternetExplorerDriverManager.getInstance().setup(); return new InternetExplorerDriver(); case "FIREFOX": FirefoxDriverManager.getInstance().setup(); return new FirefoxDriver(); default: ChromeDriverManager.getInstance().setup(); return new ChromeDriver(); } }
public static WebDriver getDriverUsingIf(DesiredCapabilities desiredCapabilities) { if (desiredCapabilities == null) { throw new IllegalStateException("DesiredCapabilities are missing!"); } final String browser = desiredCapabilities.getbrowserName(); if (CHROME.equalsIgnoreCase(browser)) { return new ChromeDriver(desiredCapabilities); } else if (FIREFOX.equalsIgnoreCase(browser)) { return new FirefoxDriver(desiredCapabilities); } else if (browser.isEmpty()) { throw new IllegalStateException("'browser' capability is missing!"); } throw new IllegalArgumentException(desiredCapabilities.getbrowserName() + " browser is not supported!"); }
@BeforeMethod public void siteUp () { final String exe = "chromedriver.exe"; final String path = getClass ().getClassLoader () .getResource (exe) .getPath (); final String webSite = "http://www.naukri.com"; final String binaryPath = "C:\\Users\\DELL\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe"; System.setProperty("webdriver.chrome.driver",path); ChromeOptions chromeOpt= new ChromeOptions(); chromeOpt.setBinary(binaryPath); driver = new ChromeDriver (chromeOpt); driver.get(webSite); driver.manage ().timeouts ().implicitlyWait (10,TimeUnit.SECONDS); driver.manage().window().maximize(); windowHandling (); }
@Override public WebDriver createDriver(DesiredCapabilities capabilities) { Map<String,Object> preferences = new Hashtable<>(); preferences.put("profile.default_content_settings.popups",0); preferences.put("download.prompt_for_download","false"); String downloadsPath = System.getProperty("user.home") + "/Downloads"; preferences.put("download.default_directory",loadSystemPropertyOrDefault("fileDownloadpath",downloadsPath)); preferences.put("plugins.plugins_disabled",new String[]{ "Adobe Flash Player","Chrome PDF Viewer"}); ChromeOptions options = new ChromeOptions(); options.setExperimentalOption("prefs",preferences); capabilities = DesiredCapabilities.chrome(); capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS,true); capabilities.setCapability(ChromeOptions.CAPABILITY,options); return new ChromeDriver(capabilities); }
private ChromeDriver setUp(Properties properties) { System.setProperty("webdriver.chrome.driver",properties.getProperty("webdriver.chrome.driver")); String binaryPath = properties.getProperty(CHROME_DRIVER_BINARY_PATH); if (binaryPath == null) { throw new RuntimeException("Missing property : " + CHROME_DRIVER_BINARY_PATH); } Map<String,Object> prefs = new HashMap<>(); prefs.put("profile.default_content_setting_values.notifications",2); ChromeOptions options = new ChromeOptions(); options.setExperimentalOption("prefs",prefs); options.setBinary(binaryPath); options.addArguments("--headless"); options.addArguments("--user-agent=" + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/60.0.3112.113 Safari/537.36"); return new ChromeDriver(options); }
/** * 对当前对url进行截屏,一方面可以做调试使用看能否进入到该页面,另一方面截屏的图片未来可以做ocr使用 * @param url */ public static void getScreenshot(String url) { //启动chrome实例 WebDriver driver = new ChromeDriver(); driver.get(url); //指定了OutputType.FILE做为参数传递给getScreenshotAs()方法,其含义是将截取的屏幕以文件形式返回。 File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); //利用IoUtils工具类的copyFile()方法保存getScreenshotAs()返回的文件对象。 try { IoUtils.copyFile(srcFile,new File("screenshot.png")); } catch (IOException e) { e.printstacktrace(); } //关闭浏览器 driver.quit(); }
public static WebDriver getDriverUsingSwitch() { final String browser = System.getProperty("browser"); if (browser == null || browser.isEmpty()) { throw new IllegalStateException("'browser' property is missing!"); } switch (browser) { case CHROME: return new ChromeDriver(); case FIREFOX: return new FirefoxDriver(); default: throw new IllegalArgumentException(browser + " browser is not supported!"); } }
/** * Создание instance google chrome эмулирующего работу на мобильном устройстве (по умолчанию nexus 5) * Мобильное устройство может быть задано через системные переменные * * @param capabilities настройки Chrome браузера * @return возвращает новый instance Chrome драйера */ @Override public WebDriver createDriver(DesiredCapabilities capabilities) { log.info("---------------run CustomMobileDriver---------------------"); String mobileDeviceName = loadSystemPropertyOrDefault("device","Nexus 5"); Map<String,String> mobileEmulation = new HashMap<>(); mobileEmulation.put("deviceName",mobileDeviceName); Map<String,Object> chromeOptions = new HashMap<>(); chromeOptions.put("mobileEmulation",mobileEmulation); DesiredCapabilities desiredCapabilities = DesiredCapabilities.chrome(); desiredCapabilities.setCapability(ChromeOptions.CAPABILITY,chromeOptions); desiredCapabilities.setbrowserName(desiredCapabilities.chrome().getbrowserName()); return new ChromeDriver(desiredCapabilities); }
private WebDriver chrome(Settings settings,DesiredCapabilities customDesiredCapabilities) { ChromeDriverManager.getInstance().setup(); DesiredCapabilities desiredCapabilities = getChromeDesiredCapabilities(settings); if (!customDesiredCapabilities.asMap().isEmpty()) { desiredCapabilities.merge(customDesiredCapabilities); } return new ChromeDriver(desiredCapabilities); }
@Test @NeedRestartDriver public void chrome_config_test() { openPage("main.html",BasePage.class); WebDriver webDriver = ((FramesTransparentWebDriver) SeleniumHolder.getWebDriver()).getWrappedDriver(); Assert.assertTrue(webDriver instanceof ChromeDriver); Assert.assertEquals(((RemoteWebDriver) webDriver).getCapabilities().getCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIoUR),UnexpecteDalertBehavIoUr.IGnorE.toString()); }
@Override public ChromeDriver getobject() throws BeansException { if (properties.getChrome().isEnabled()) { try { return new ChromeDriver(chromeDriverService); } catch (IllegalStateException e) { e.printstacktrace(); // swallow the exception } } return null; }
@Test public void testWithMockedChrome() { load(new Class[]{},"com.greglturnquist.webdriver.firefox.enabled:false","com.greglturnquist.webdriver.safari.enabled:false"); WebDriver driver = context.getBean(WebDriver.class); assertthat(ClassUtils.isAssignable(TakesScreenshot.class,driver.getClass())).isTrue(); assertthat(ClassUtils.isAssignable(ChromeDriver.class,driver.getClass())).isTrue(); }
@BeforeClass public static void setUp() throws IOException { System.setProperty("webdriver.chrome.driver","ext/chromedriver"); service = createDefaultService(); driver = new ChromeDriver(service); Path testResults = Paths.get("build","test-results"); if (!Files.exists(testResults)) { Files.createDirectory(testResults); } }
public static void main(String[] args) throws Exception{ //配置Chromediver System.getProperties().setProperty("webdriver.chrome.driver","chromedriver.exe"); //开启新WebDriver进程 WebDriver webDriver = new ChromeDriver(); //全局隐式等待 webDriver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS); //设定网址 webDriver.get("https://passport.weibo.cn/signin/login?entry=mweibo&res=wel&wm=3349&r=http%3A%2F%2Fm.weibo.cn%2F"); //显示等待控制对象 webdriverwait webdriverwait=new webdriverwait(webDriver,10); //等待输入框可用后输入账号密码 webdriverwait.until(ExpectedConditions.elementToBeClickable(By.id("loginName"))).sendKeys(args[0]); webdriverwait.until(ExpectedConditions.elementToBeClickable(By.id("loginPassword"))).sendKeys(args[1]); //点击登录 webDriver.findElement(By.id("loginAction")).click(); //等待2秒用于页面加载,保证Cookie响应全部获取。 sleep(2000); //获取Cookie并打印 Set<Cookie> cookies=webDriver.manage().getCookies(); Iterator iterator=cookies.iterator(); while (iterator.hasNext()){ System.out.println(iterator.next().toString()); } //关闭WebDriver,否则并不自动关闭 webDriver.close(); }
public static void testSelenium() throws Exception { System.getProperties().setProperty("webdriver.chrome.driver","chromedriver.exe"); WebDriver webDriver = new ChromeDriver(); webDriver.get("http://huaban.com/"); Thread.sleep(5000); WebElement webElement = webDriver.findElement(By.xpath("/html")); System.out.println(webElement.getAttribute("outerHTML")); webDriver.close(); }
private void mockProvider(final WebDriverProvider provider,final int duplicatesAmount,final BeforeMethodListener listener) { final WebDriverProvider spyProvider = spy(provider); final WebDriver mockDriver = mock(ChromeDriver.class); doReturn(mockDriver).when(spyProvider).createDriver(any(),any()); final List<WebDriverProvider> providers = duplicatesAmount > 1 ? IntStreamEx.range(0,duplicatesAmount).mapToObj(i -> provider).toList() : singletonList(spyProvider); doReturn(providers).when(listener).getWebDriverProviders(); }
@BeforeEach void init() { //打开chrome浏览器 System.setProperty("webdriver.chrome.driver",Thread.currentThread().getContextClassLoader() .getResource("autotest/" + "chromedriver.exe").getPath()); ChromeOptions options = new ChromeOptions(); options.addArguments("disable-infobars"); d = new ChromeDriver(options); d.manage().window().maximize(); d.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS); }
/** * Generates a chrome webdriver. * * @param headlessMode * Enable headless mode ? * @return * A chrome webdriver * @throws TechnicalException * if an error occured when Webdriver setExecutable to true. */ private WebDriver generateGoogleChromeDriver(boolean headlessMode) throws TechnicalException { final String pathWebdriver = DriverFactory.getPath(Driver.CHROME); if (!new File(pathWebdriver).setExecutable(true)) { throw new TechnicalException(Messages.getMessage(TechnicalException.TECHNICAL_ERROR_MESSAGE_WEBDRIVER_SET_EXECUTABLE)); } logger.info("Generating Chrome driver ({}) ...",pathWebdriver); System.setProperty(Driver.CHROME.getDriverName(),pathWebdriver); final ChromeOptions chromeOptions = new ChromeOptions(); final DesiredCapabilities capabilities = DesiredCapabilities.chrome(); capabilities.setCapability(CapabilityType.ForSeleniumServer.ENSURING_CLEAN_SESSION,true); capabilities.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIoUR,UnexpecteDalertBehavIoUr.ACCEPT); setLoggingLevel(capabilities); if (Context.isHeadless()) { chromeOptions.addArguments("--headless"); } // Proxy configuration if (Context.getProxy().getProxyType() != ProxyType.UNSPECIFIED && Context.getProxy().getProxyType() != ProxyType.AUTODETECT) { capabilities.setCapability(CapabilityType.PROXY,Context.getProxy()); } setChromeOptions(capabilities,chromeOptions); String withWhitelistedIps = Context.getWebdriversProperties("withWhitelistedIps"); if (withWhitelistedIps != null && !"".equals(withWhitelistedIps)) { ChromeDriverService service = new ChromeDriverService.Builder().withWhitelistedIps(withWhitelistedIps).withVerbose(false).build(); return new ChromeDriver(service,capabilities); } else { return new ChromeDriver(capabilities); } }
@Before public void start() { driver = new ChromeDriver(); //driver = new FirefoxDriver(); //driver = new InternetExplorerDriver(); wait = new webdriverwait(driver,10); }
public static WebDriver getDriverUsingMatcherAndCommonFunctions() { return Match(System.getProperty("browser")).of( Case(anyOf(isNull(),String::isEmpty),() -> { throw new IllegalStateException("'browser' property is missing!"); }),Case(CHROME::equalsIgnoreCase,() -> new ChromeDriver()),Case(FIREFOX::equalsIgnoreCase,() -> new FirefoxDriver()),Case($(),browser -> { throw new IllegalArgumentException(browser + " browser is not supported!"); })); }
@Before public void start() { /* // Collect login data before start Scanner in = new Scanner(system.in); System.out.println ("Enter login: "); email = in.nextLine(); System.out.println ("Enter password: "); psw = in.nextLine(); */ //open new window driver = new ChromeDriver(); wait = new webdriverwait(driver,10); }
@Before public void start() { driver = new ChromeDriver(); //driver = new FirefoxDriver(); //driver = new InternetExplorerDriver(); wait = new webdriverwait(driver,10); }
static void test() { System.setProperty("webdriver.chrome.driver","D:\\selenium\\chromedriver_win32\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS); driver.manage().timeouts().pageLoadTimeout(5,TimeUnit.SECONDS); String url = "http://www.baidu.com/"; driver.get(url); //��ȡ��ǰҳ��ȫ��iframe������iframe����Ԫ�� try { List<WebElement> iframes = driver.findElements(By.tagName("iframe")); //��ȡȫ��iframe��ǩ if(iframes.size()!=0) { for(WebElement iframe : iframes) { if(iframe.getSize() != null) { System.out.println(iframe.getAttribute("outerHtml")); } } }else{ System.out.println("��ҳ�治����iframe"); } }catch(Exception e) { System.out.println(e); } }
public WebDriver maximizebrowserAndDrivers() { String chromePath = System.getProperty("user.dir") + "/Drivers/chrome/chromedriver"; System.setProperty("webdriver.chrome.driver",chromePath); ChromeOptions options = new ChromeOptions(); options.addArguments("--incognito"); this.driver = new ChromeDriver(); driver.manage().window().maximize(); return driver; }
@Test public void callsTheCorrectConstructor() throws Exception { ChromeDriverService chromeDriverService = mock(ChromeDriverService.class); DesiredCapabilities desiredCapabilities = mock(DesiredCapabilities.class); ChromeDriver expected = mock(ChromeDriver.class); whenNew(ChromeDriver.class).withArguments(chromeDriverService,desiredCapabilities).thenReturn(expected); ChromeDriversupplier chromeDriversupplier = new ChromeDriversupplier(); WebDriver actual = chromeDriversupplier.get(chromeDriverService,desiredCapabilities); assertEquals(expected,actual); }
public static WebDriver getDriverUsingMatcherAndCustomFunctions(DesiredCapabilities capabilities) { return Match(capabilities).of( Case(isNull(),() -> { throw new IllegalStateException("DesiredCapabilities are missing!"); }),Case(hasNobrowser,() -> { throw new IllegalArgumentException("'browser' capability is missing!"); }),Case(isChrome,caps -> new ChromeDriver(caps)),Case(isFirefox,caps -> new FirefoxDriver(caps)),caps -> { throw new IllegalArgumentException(caps.getbrowserName() + " browser is not supported!"); })); }
@Test void webrtcTest(ChromeDriver driver) { driver.get( "https://webrtc.github.io/samples/src/content/devices/input-output/"); assertthat(driver.findElement(By.id("video")).getTagName(),equalTo("video")); }
public static WebDriver getChromeDriver(String pathtochromeExecutable) { String path = System.getProperty("user.dir") + "\\Drivers\\chromedriver.exe"; System.setProperty("webdriver.chrome.driver",path); Map<String,Object> chromeOptions = new HashMap<String,Object>(); chromeOptions.put("binary",pathtochromeExecutable); DesiredCapabilities capabilities = DesiredCapabilities.chrome(); capabilities.setCapability(ChromeOptions.CAPABILITY,chromeOptions); return new ChromeDriver(capabilities); }
@Test void screenshottest(ChromeDriver driver) { driver.get("https://bonigarcia.github.io/selenium-jupiter/"); assertthat(driver.getTitle(),containsstring("A JUnit 5 extension for Selenium WebDriver")); imageFile = new File("screenshottest_arg0_ChromeDriver_" + driver.getSessionId() + ".png"); }
@Test void screenshottest(ChromeDriver driver) { driver.get("https://bonigarcia.github.io/selenium-jupiter/"); assertthat(driver.getTitle(),containsstring("A JUnit 5 extension for Selenium WebDriver")); imageFile = new File("screenshottest_arg0_ChromeDriver_" + driver.getSessionId() + ".png"); }
@Test void screenshottest(ChromeDriver driver) { driver.get("https://bonigarcia.github.io/selenium-jupiter/"); assertthat(driver.getTitle(),containsstring("A JUnit 5 extension for Selenium WebDriver")); imageName = new File( "./target/surefire-reports/io.github.bonigarcia.test.screenshot.ScreenshotSurefireTest","screenshottest_arg0_ChromeDriver_" + driver.getSessionId() + ".png"); }
private void updateTt(Consumer<Tt> onTtUpsert,Consumer<TtResult> onTtResultUpsert,ChromeDriver driver,Tt tt) { tt.setUrl(String.format("%s%d/","https://www.facebook.com/groups/first4figures/permalink/",tt.getId())); driver.get(tt.getUrl()); WebElement timestampElement = driver.findElementByCssSelector(String.format("a[href*='%s']>[data-utime]",tt.getId())); List<WebElement> values = driver.findElementsByCssSelector("a[data-tooltip-content$='other people']"); List<WebElement> category = driver.findElementsByCssSelector("div[role='presentation']>div:nth-child(2)>span"); if (timestampElement != null) { Long timestamp = Long.parseLong(timestampElement.getAttribute("data-utime")); tt.setCreationDate(timestamp); } if (values.size() < 2 || category.size() < 2) { throw new RuntimeException("Couldn't parse TT from page: " + tt); } TtResult ttResult = new TtResult(UUID.randomUUID().toString(),tt.getId(),Instant.Now().getEpochSecond()); for (int i = 0; i < 2; i++) { Matcher matcher = Pattern.compile("-?\\d+").matcher(values.get(i).getAttribute("data-tooltip-content")); if (!matcher.find()) { throw new RuntimeException("Couldn't parse TT result from page : " + tt); } String label = category.get(i).getText(); Long value = Long.parseLong(matcher.group()); if ("Yes".equalsIgnoreCase(label)) { ttResult.setYes(value); } else if ("No".equalsIgnoreCase(label)) { ttResult.setNo(value); } } LOGGER.log(Level.INFO,String.format("upsert : %s",tt.toString())); onTtUpsert.accept(tt); LOGGER.log(Level.INFO,ttResult.toString())); onTtResultUpsert.accept(ttResult); }
@Test public void testWithChromeAndFirefox(ChromeDriver driver1,FirefoxDriver driver2) { driver1.get("http://www.seleniumhq.org/"); driver2.get("http://junit.org/junit5/"); assertthat(driver1.getTitle(),startsWith("Selenium")); assertthat(driver2.getTitle(),equalTo("JUnit 5")); }
@disabled("Redudant test for Travis CI suite") // tag::snippet-in-doc[] @Test public void testWithTwoChromes(ChromeDriver driver1,ChromeDriver driver2) { driver1.get("http://www.seleniumhq.org/"); driver2.get("http://junit.org/junit5/"); assertthat(driver1.getTitle(),equalTo("JUnit 5")); }
static Stream<Arguments> forcedTestProvider() { return Stream.of( Arguments.of(AppiumDriverHandler.class,ForcedAppiumJupiterTest.class,AppiumDriver.class,"appiumNoCapabilitiesTest"),Arguments.of(AppiumDriverHandler.class,"appiumWithCapabilitiesTest"),Arguments.of(ChromeDriverHandler.class,ForcedBadChromeJupiterTest.class,ChromeDriver.class,"chromeTest"),Arguments.of(FirefoxDriverHandler.class,ForcedBadFirefoxJupiterTest.class,FirefoxDriver.class,"firefoxTest"),Arguments.of(RemoteDriverHandler.class,ForcedBadRemoteJupiterTest.class,RemoteWebDriver.class,"remoteTest"),Arguments.of(EdgeDriverHandler.class,ForcedEdgeJupiterTest.class,EdgeDriver.class,"edgeTest"),Arguments.of(OperaDriverHandler.class,ForcedOperaJupiterTest.class,OperaDriver.class,"operaTest"),Arguments.of(SafariDriverHandler.class,ForcedSafariJupiterTest.class,SafariDriver.class,"safariTest")); }
/** * {@inheritDoc} */ @Override public ChromeDriver start(Capabilities other) { Capabilities capabilities = this.mergeCapabilities(other); if (capabilities == null) { return new ChromeDriver(); } return new ChromeDriver(capabilities); }
public static WebDriver getChromeDriver() { String path = "src/test/resources/chromedriver"; System.setProperty("webdriver.chrome.driver",path); DesiredCapabilities capabilities = DesiredCapabilities.chrome(); capabilities.setCapability("networkConnectionEnabled",true); capabilities.setCapability("browserConnectionEnabled",true); return new ChromeDriver(capabilities); }
/** * Load the default configuration. It will not erase prevIoUs non-default configurations. * * @return Itself. */ public SeleniumConfiguration loadDefaultConfiguration() { this.getConfiguration().put(ChromeDriver.class,new ChromeConfiguration()); this.getConfiguration().put(EdgeDriver.class,new EdgeConfiguration()); this.getConfiguration().put(FirefoxDriver.class,new FirefoxConfiguration()); this.getConfiguration().put(HtmlUnitConfiguration.class,new HtmlUnitConfiguration()); this.getConfiguration().put(InternetExplorerConfiguration.class,new InternetExplorerConfiguration()); this.getConfiguration().put(OperaConfiguration.class,new OperaConfiguration()); this.getConfiguration().put(PhantomJSConfiguration.class,new PhantomJSConfiguration()); this.getConfiguration().put(SafariDriver.class,new SafariConfiguration()); return this; }
@BeforeClass public static void sharedForAllTests() { // Keep the WebDriver browser window open between tests ChromeOptions co = new ChromeOptions(); co.addArguments("headless"); co.addArguments("window-size=1200x800"); DRIVER = new ChromeDriver(co); FWD = new FluentWebDriver(DRIVER); }
python+selenium启动chrome浏览器失败
之前已经用Firefox试过,可以正常启动Firefpx浏览器,下载了最新的chrome浏览器,chromedriver.exe也下载了,放在chrome目录下。但是启动chrome失败,错误信息提示如图。我有2个电脑,同样的代码,另一个可以成功,这个就不行了。
python的源码如下:
import os
from selenium import webdriver
chromepath=os.path.abspath(r"C:\Program Files (x86)\Google\Chrome\Application")
openchrome=webdriver.Chrome(chromepath)
报错图如下:
今天关于如何配置ChromeDriver通过Selenium以无头模式启动Chrome浏览器?和chrome 无头模式的介绍到此结束,谢谢您的阅读,有关3-Python爬虫-动态HTML/Selenium+PhantomJS/chrome无头浏览器-chromedriver、Chrome浏览器通过Pythonselenium自动更新时如何使用特定版本的ChromeDriver、org.openqa.selenium.chrome.ChromeDriver的实例源码、python+selenium启动chrome浏览器失败等更多相关知识的信息可以在本站进行查询。
本文标签: