diff --git a/examples/java/src/test/java/dev/selenium/browsers/ChromeTest.java b/examples/java/src/test/java/dev/selenium/browsers/ChromeTest.java index ca35d43784d0..2a890a8907f8 100644 --- a/examples/java/src/test/java/dev/selenium/browsers/ChromeTest.java +++ b/examples/java/src/test/java/dev/selenium/browsers/ChromeTest.java @@ -4,9 +4,15 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeDriverService; import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.By; +import java.io.File; +import java.nio.file.Path; +import java.nio.file.Paths; import org.openqa.selenium.chromium.ChromiumDriverLogLevel; import java.io.File; @@ -49,7 +55,6 @@ public void excludeSwitches() { driver = new ChromeDriver(options); } - @Test public void logsToFile() throws IOException { ChromeDriverService service = new ChromeDriverService.Builder() .withLogFile(getLogLocation()) @@ -127,6 +132,17 @@ public void disableBuildChecks() throws IOException { Assertions.assertTrue(fileContent.contains(expected)); } + @Test + public void extensionOptions() { + ChromeOptions options = new ChromeOptions(); + Path path = Paths.get("src/test/resources/extensions/webextensions-selenium-example.crx"); + options.addExtensions(new File(path.toUri())); + driver = new ChromeDriver(options); + driver.get("https://www.selenium.dev/selenium/web/blank.html"); + WebElement injected = driver.findElement(By.id("webextensions-selenium-example")); + Assertions.assertEquals("Content injected by webextensions-selenium-example", injected.getText()); + } + private File getLogLocation() throws IOException { if (logLocation == null || !logLocation.exists()) { logLocation = File.createTempFile("chromedriver-", ".log"); diff --git a/examples/java/src/test/resources/extensions/webextensions-selenium-example.crx b/examples/java/src/test/resources/extensions/webextensions-selenium-example.crx new file mode 100644 index 000000000000..38b38003b7ec Binary files /dev/null and b/examples/java/src/test/resources/extensions/webextensions-selenium-example.crx differ diff --git a/examples/javascript/test/browser/chromeSpecificCaps.spec.js b/examples/javascript/test/browser/chromeSpecificCaps.spec.js index ceb499b92044..29ad798ed060 100644 --- a/examples/javascript/test/browser/chromeSpecificCaps.spec.js +++ b/examples/javascript/test/browser/chromeSpecificCaps.spec.js @@ -57,5 +57,16 @@ suite(function (env) { await driver.get('https://www.selenium.dev/selenium/web/blank.html'); await driver.quit(); }); + + it('Add Extension', async function () { + const options = new Chrome.Options(); + let driver = await env + .builder() + .setChromeOptions(options.addExtensions(['./test/resources/extensions/webextensions-selenium-example.crx'])) + .build(); + + await driver.get('https://www.selenium.dev/selenium/web/blank.html'); + await driver.quit(); + }); }); }, { browsers: [Browser.CHROME]}); \ No newline at end of file diff --git a/examples/javascript/test/resources/extensions/webextensions-selenium-example.crx b/examples/javascript/test/resources/extensions/webextensions-selenium-example.crx new file mode 100644 index 000000000000..38b38003b7ec Binary files /dev/null and b/examples/javascript/test/resources/extensions/webextensions-selenium-example.crx differ diff --git a/examples/python/tests/browsers/test_chrome.py b/examples/python/tests/browsers/test_chrome.py index e4b75d09c315..bd9234c8e6d0 100644 --- a/examples/python/tests/browsers/test_chrome.py +++ b/examples/python/tests/browsers/test_chrome.py @@ -1,3 +1,4 @@ +import os import re import subprocess @@ -98,3 +99,14 @@ def test_build_checks(log_path): driver.quit() + driver.quit() + +def test_add_extension(): + chrome_options = webdriver.ChromeOptions() + path = os.path.abspath("tests/extensions/webextensions-selenium-example.crx") + chrome_options.add_extension(path) + + driver = webdriver.Chrome(options=chrome_options) + driver.get("https://www.selenium.dev/selenium/web/blank.html"); + + driver.quit() diff --git a/examples/python/tests/extensions/webextensions-selenium-example.crx b/examples/python/tests/extensions/webextensions-selenium-example.crx new file mode 100644 index 000000000000..38b38003b7ec Binary files /dev/null and b/examples/python/tests/extensions/webextensions-selenium-example.crx differ diff --git a/examples/ruby/spec/browsers/chrome_spec.rb b/examples/ruby/spec/browsers/chrome_spec.rb index de2e638764eb..0eeb982b69af 100644 --- a/examples/ruby/spec/browsers/chrome_spec.rb +++ b/examples/ruby/spec/browsers/chrome_spec.rb @@ -89,5 +89,17 @@ warning = /\[WARNING\]: You are using an unsupported command-line switch: --disable-build-check/ expect(File.readlines(file_name).grep(warning).any?).to eq true end + + it 'Add extensions' do + extension_file_path = File.expand_path('../extensions/webextensions-selenium-example.crx', __dir__) + options = Selenium::WebDriver::Options.chrome + options.add_extension(extension_file_path) + + @driver = Selenium::WebDriver.for :chrome, options: options + @driver.get("https://www.selenium.dev/selenium/web/blank.html"); + injected = @driver.find_element(:id, 'webextensions-selenium-example') + expect(injected.text).to eq 'Content injected by webextensions-selenium-example' + end + end end diff --git a/examples/ruby/spec/extensions/webextensions-selenium-example.crx b/examples/ruby/spec/extensions/webextensions-selenium-example.crx new file mode 100644 index 000000000000..38b38003b7ec Binary files /dev/null and b/examples/ruby/spec/extensions/webextensions-selenium-example.crx differ diff --git a/website_and_docs/content/documentation/webdriver/browsers/chrome.en.md b/website_and_docs/content/documentation/webdriver/browsers/chrome.en.md index 187fb633bb11..557edf981051 100644 --- a/website_and_docs/content/documentation/webdriver/browsers/chrome.en.md +++ b/website_and_docs/content/documentation/webdriver/browsers/chrome.en.md @@ -112,19 +112,19 @@ Add an extension to options: {{< tabpane text=true langEqualsHeader=true >}} {{< tab header="Java" >}} -{{< badge-code >}} +{{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/browsers/ChromeTest.java#L137-L139" >}} {{< /tab >}} {{% tab header="Python" %}} -{{< badge-code >}} +{{< gh-codeblock path="/examples/python/tests/browsers/test_chrome.py#L105-L107">}} {{% /tab %}} {{< tab header="CSharp" >}} {{< gh-codeblock path="/examples/dotnet/SeleniumDocs/Browsers/ChromeTest.cs#L50" >}} {{< /tab >}} {{< tab header="Ruby" >}} -{{< badge-code >}} +{{< gh-codeblock path="/examples/ruby/spec/browsers/chrome_spec.rb#L94-L96" >}} {{< /tab >}} {{< tab header="JavaScript" >}} -{{< badge-code >}} +{{< gh-codeblock path="/examples/javascript/test/browser/chromeSpecificCaps.spec.js#L62-L66">}} {{< /tab >}} {{< tab header="Kotlin" >}} {{< badge-code >}} diff --git a/website_and_docs/content/documentation/webdriver/browsers/chrome.ja.md b/website_and_docs/content/documentation/webdriver/browsers/chrome.ja.md index 3b7076a5cb77..2ea589791803 100644 --- a/website_and_docs/content/documentation/webdriver/browsers/chrome.ja.md +++ b/website_and_docs/content/documentation/webdriver/browsers/chrome.ja.md @@ -115,19 +115,19 @@ please use the `load-extension` argument instead, as mentioned in {{< tabpane text=true langEqualsHeader=true >}} {{< tab header="Java" >}} -{{< badge-code >}} +{{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/browsers/ChromeTest.java#L44-L47" >}} {{< /tab >}} {{% tab header="Python" %}} -{{< badge-code >}} +{{< gh-codeblock path="/examples/python/tests/browsers/test_chrome.py#L41-L43">}} {{% /tab %}} {{< tab header="CSharp" >}} {{< gh-codeblock path="/examples/dotnet/SeleniumDocs/Browsers/ChromeTest.cs#L50" >}} {{< /tab >}} {{< tab header="Ruby" >}} -{{< badge-code >}} +{{< gh-codeblock path="/examples/ruby/spec/browsers/chrome_spec.rb#L35-L37" >}} {{< /tab >}} {{< tab header="JavaScript" >}} -{{< badge-code >}} +{{< gh-codeblock path="/examples/javascript/test/browser/chromeSpecificCaps.spec.js#L51-L55">}} {{< /tab >}} {{< tab header="Kotlin" >}} {{< badge-code >}} diff --git a/website_and_docs/content/documentation/webdriver/browsers/chrome.pt-br.md b/website_and_docs/content/documentation/webdriver/browsers/chrome.pt-br.md index ffcc5b5edb4a..c669ef1caefb 100644 --- a/website_and_docs/content/documentation/webdriver/browsers/chrome.pt-br.md +++ b/website_and_docs/content/documentation/webdriver/browsers/chrome.pt-br.md @@ -111,19 +111,19 @@ Adicionar uma extensão: {{< tabpane text=true langEqualsHeader=true >}} {{< tab header="Java" >}} -{{< badge-code >}} +{{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/browsers/ChromeTest.java#L44-L47" >}} {{< /tab >}} {{% tab header="Python" %}} -{{< badge-code >}} +{{< gh-codeblock path="/examples/python/tests/browsers/test_chrome.py#L41-L43">}} {{% /tab %}} {{< tab header="CSharp" >}} {{< gh-codeblock path="/examples/dotnet/SeleniumDocs/Browsers/ChromeTest.cs#L50" >}} {{< /tab >}} {{< tab header="Ruby" >}} -{{< badge-code >}} +{{< gh-codeblock path="/examples/ruby/spec/browsers/chrome_spec.rb#L35-L37" >}} {{< /tab >}} {{< tab header="JavaScript" >}} -{{< badge-code >}} +{{< gh-codeblock path="/examples/javascript/test/browser/chromeSpecificCaps.spec.js#L51-L55">}} {{< /tab >}} {{< tab header="Kotlin" >}} {{< badge-code >}} diff --git a/website_and_docs/content/documentation/webdriver/browsers/chrome.zh-cn.md b/website_and_docs/content/documentation/webdriver/browsers/chrome.zh-cn.md index bed325624f65..bc0661d22244 100644 --- a/website_and_docs/content/documentation/webdriver/browsers/chrome.zh-cn.md +++ b/website_and_docs/content/documentation/webdriver/browsers/chrome.zh-cn.md @@ -111,19 +111,19 @@ please use the `load-extension` argument instead, as mentioned in {{< tabpane text=true langEqualsHeader=true >}} {{< tab header="Java" >}} -{{< badge-code >}} +{{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/browsers/ChromeTest.java#L44-L47" >}} {{< /tab >}} {{% tab header="Python" %}} -{{< badge-code >}} +{{< gh-codeblock path="/examples/python/tests/browsers/test_chrome.py#L41-L43">}} {{% /tab %}} {{< tab header="CSharp" >}} {{< gh-codeblock path="/examples/dotnet/SeleniumDocs/Browsers/ChromeTest.cs#L50" >}} {{< /tab >}} {{< tab header="Ruby" >}} -{{< badge-code >}} +{{< gh-codeblock path="/examples/ruby/spec/browsers/chrome_spec.rb#L35-L37" >}} {{< /tab >}} {{< tab header="JavaScript" >}} -{{< badge-code >}} +{{< gh-codeblock path="/examples/javascript/test/browser/chromeSpecificCaps.spec.js#L51-L55">}} {{< /tab >}} {{< tab header="Kotlin" >}} {{< badge-code >}}