ใƒ–ใƒฉใ‚ฆใ‚ถใƒผใ‚ชใƒ—ใ‚ทใƒงใƒณ

ใ“ใ‚Œใ‚‰ใฎๆฉŸ่ƒฝใฏใ™ในใฆใฎใƒ–ใƒฉใ‚ฆใ‚ถใงๅ…ฑๆœ‰ใ•ใ‚Œใฆใ„ใพใ™ใ€‚

Selenium 3 ใงใฏใ€Capabilitiesใฏ Desired Capabilities ใ‚ฏใƒฉใ‚นใ‚’ไฝฟ็”จใ—ใฆใ‚ปใƒƒใ‚ทใƒงใƒณใงๅฎš็พฉใ—ใฆใ„ใพใ—ใŸใ€‚ Selenium 4 ไปฅ้™ใ€ใƒ–ใƒฉใ‚ฆใ‚ถ ใ‚ชใƒ—ใ‚ทใƒงใƒณ ใ‚ฏใƒฉใ‚นใ‚’ไฝฟ็”จใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚ ใƒชใƒขใƒผใƒˆ ใƒ‰ใƒฉใ‚คใƒใƒผ ใ‚ปใƒƒใ‚ทใƒงใƒณใฎๅ ดๅˆใ€ไฝฟ็”จใ™ใ‚‹ใƒ–ใƒฉใ‚ฆใ‚ถใƒผใ‚’ๆฑบใ‚ใ‚‹ใŸใ‚ใ€ใƒ–ใƒฉใ‚ฆใ‚ถใƒผใ‚ชใƒ—ใ‚ทใƒงใƒณใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใŒๅฟ…่ฆใงใ™ใ€‚

ใ“ใ‚Œใ‚‰ใฎใ‚ชใƒ—ใ‚ทใƒงใƒณใฏใ€Capabilities ใฎ w3cไป•ๆง˜ใง่ชฌๆ˜Žใ—ใฆใ„ใพใ™ใ€‚

ๅ„ใƒ–ใƒฉใ‚ฆใ‚ถใซใฏใ€w3cไป•ๆง˜ใงๅฎš็พฉใ—ใฆใ„ใ‚‹ใ‚‚ใฎใซๅŠ ใˆใฆๅฎš็พฉๅฏ่ƒฝใช ใ‚ซใ‚นใ‚ฟใƒ  ใ‚ชใƒ—ใ‚ทใƒงใƒณ ใŒใ‚ใ‚Šใพใ™ใ€‚

browserName

ใ‚ชใƒ—ใ‚ทใƒงใƒณใ‚ฏใƒฉใ‚นใฎใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใ‚’ไฝฟ็”จใ™ใ‚‹ใจใ€ใƒ–ใƒฉใ‚ฆใ‚ถๅใฏใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใง่จญๅฎšใ•ใ‚Œใพใ™ใ€‚

	ChromeOptions chromeOptions = getDefaultChromeOptions();
	String name = chromeOptions.getBrowserName();
    options = get_default_chrome_options()
    assert options.capabilities['browserName'] == 'chrome'
      options = Selenium::WebDriver::Options.chrome

browserVersion

ใ“ใฎๆฉŸ่ƒฝใฏใ‚ชใƒ—ใ‚ทใƒงใƒณใงใ‚ใ‚Šใ€ใƒชใƒขใƒผใƒˆๅดใงไฝฟ็”จๅฏ่ƒฝใชใƒ–ใƒฉใ‚ฆใ‚ถใฎใƒใƒผใ‚ธใƒงใƒณใ‚’่จญๅฎšใ™ใ‚‹ใŸใ‚ใซไฝฟ็”จใ•ใ‚Œใพใ™ใ€‚ๆœ€่ฟ‘ใฎSeleniumใฎใƒใƒผใ‚ธใƒงใƒณใงใฏใ€ใ‚ทใ‚นใƒ†ใƒ ใซใƒใƒผใ‚ธใƒงใƒณใŒ่ฆ‹ใคใ‹ใ‚‰ใชใ„ๅ ดๅˆใ€Selenium Manager ใซใ‚ˆใฃใฆ่‡ชๅ‹•็š„ใซใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ•ใ‚Œใพใ™ใ€‚

	ChromeOptions chromeOptions = getDefaultChromeOptions();
	String version = "latest";
	chromeOptions.setBrowserVersion(version);
    options = get_default_chrome_options()
    options.browser_version = 'stable'
    assert options.capabilities['browserVersion'] == 'stable'
      options.browser_version = 'latest'

pageLoadStrategy

3็จฎ้กžใฎใƒšใƒผใ‚ธ่ชญใฟ่พผใฟๆˆฆ็•ฅใ‚’ๅˆฉ็”จใงใใพใ™ใ€‚

ใƒšใƒผใ‚ธ่ชญใฟ่พผใฟๆˆฆ็•ฅใฏใ€ๆฌกใฎ่กจใง่ชฌๆ˜Žใ—ใฆใ„ใพใ™ใ€‚

ๆˆฆ็•ฅๆบ–ๅ‚™ๅฎŒไบ†็Šถๆ…‹ๆณจ้‡ˆ
normalcompleteใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใงไฝฟ็”จใ•ใ‚Œใ€ใ™ในใฆใฎใƒชใ‚ฝใƒผใ‚นใ‚’ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ™ใ‚‹ใฎใ‚’ๅพ…ใกใพใ™
eagerinteractiveDOM ใ‚ขใ‚ฏใ‚ปใ‚นใฎๆบ–ๅ‚™ใฏๆ•ดใฃใฆใ„ใพใ™ใŒใ€็”ปๅƒใชใฉใฎไป–ใฎใƒชใ‚ฝใƒผใ‚นใฏใพใ ใƒญใƒผใƒ‰ไธญใฎๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™
noneAnyWebDriver ใ‚’ใพใฃใŸใใƒ–ใƒญใƒƒใ‚ฏใ—ใพใ›ใ‚“

ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใฎ document.readyState ใƒ—ใƒญใƒ‘ใƒ†ใ‚ฃใฏใ€็พๅœจใฎใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใฎ่ชญใฟ่พผใฟ็Šถๆ…‹ใ‚’็คบใ—ใพใ™ใ€‚

URL ็ตŒ็”ฑใงๆ–ฐใ—ใ„ใƒšใƒผใ‚ธใซ็งปๅ‹•ใ™ใ‚‹ๅ ดๅˆใ€ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใงใฏใ€WebDriver ใฏใ€ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใฎๆบ–ๅ‚™ๅฎŒไบ†็Šถๆ…‹ใŒๅฎŒไบ†ใ™ใ‚‹ใพใงใ€ ใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณ ใƒกใ‚ฝใƒƒใƒ‰ (driver.navigate().get() ใชใฉ) ใฎๅฎŒไบ†ใ‚’ไฟ็•™ใ—ใพใ™ใ€‚ ใ“ใ‚Œใฏๅฟ…ใšใ—ใ‚‚ใƒšใƒผใ‚ธใฎ่ชญใฟ่พผใฟใŒๅฎŒไบ†ใ—ใŸใ“ใจใ‚’ๆ„ๅ‘ณใ™ใ‚‹ใ‚ใ‘ใงใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚ ็‰นใซใ€Ready State ใŒๅฎŒไบ†ใ—ใŸๅพŒใซ JavaScript ใ‚’ไฝฟ็”จใ—ใฆใ‚ณใƒณใƒ†ใƒณใƒ„ใ‚’ๅ‹•็š„ใซ่ชญใฟ่พผใ‚€ใ‚ทใƒณใ‚ฐใƒซ ใƒšใƒผใ‚ธ ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใฎใ‚ˆใ†ใชใ‚ตใ‚คใƒˆใฎๅ ดๅˆใฏใใ†ใงใ™ใ€‚ ใพใŸใ€ใ“ใฎๅ‹•ไฝœใฏใ€่ฆ็ด ใฎใ‚ฏใƒชใƒƒใ‚ฏใพใŸใฏใƒ•ใ‚ฉใƒผใƒ ใฎ้€ไฟกใฎ็ตๆžœใงใ‚ใ‚‹ใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณใซใฏ้ฉ็”จใ•ใ‚Œใชใ„ใ“ใจใซๆณจๆ„ใ—ใฆใใ ใ•ใ„ใ€‚

่‡ชๅ‹•ๅŒ–ใซใจใฃใฆ้‡่ฆใงใฏใชใ„ใ‚ขใ‚ปใƒƒใƒˆ (็”ปๅƒใ€cssใ€js ใชใฉ) ใ‚’ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใŸ็ตๆžœใ€ใƒšใƒผใ‚ธใฎ่ชญใฟ่พผใฟใซๆ™‚้–“ใŒใ‹ใ‹ใ‚‹ๅ ดๅˆใฏใ€ ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฎใƒ‘ใƒฉใƒกใƒผใ‚ฟใƒผใงใ‚ใ‚‹ normal ใ‚’ eager ใพใŸใฏ none ใซๅค‰ๆ›ดใ—ใฆใ€ใ‚ปใƒƒใ‚ทใƒงใƒณใฎ่ชญใฟ่พผใฟใ‚’้ซ˜้€ŸๅŒ–ใงใใพใ™ใ€‚ ใ“ใฎๅ€คใฏใ‚ปใƒƒใ‚ทใƒงใƒณๅ…จไฝ“ใซ้ฉ็”จใ•ใ‚Œใ‚‹ใŸใ‚ใ€ ๅพ…ๆฉŸๆˆฆ็•ฅ ใŒไธๅฎ‰ๅฎšใ•ใ‚’ๆœ€ๅฐ้™ใซๆŠ‘ใˆใ‚‹ใฎใซๅๅˆ†ใงใ‚ใ‚‹ใ“ใจใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚

normal (ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ)

WebDriver ใฏ load ใ‚คใƒ™ใƒณใƒˆๆคœ็Ÿฅใ™ใ‚‹ใพใงๅพ…ๆฉŸใ—ใพใ™ใ€‚

    ChromeOptions chromeOptions = getDefaultChromeOptions();
    chromeOptions.setPageLoadStrategy(PageLoadStrategy.NORMAL);
    WebDriver driver = new ChromeDriver(chromeOptions);
    options = get_default_chrome_options()
    options.page_load_strategy = 'normal'
    driver = webdriver.Chrome(options=options)
            ChromeOptions chromeOptions = new ChromeOptions();
            chromeOptions.PageLoadStrategy = PageLoadStrategy.Normal;
      options = Selenium::WebDriver::Options.chrome
      options.page_load_strategy = :normal
    let driver = new Builder()
      .forBrowser(Browser.CHROME)
      .setChromeOptions(options.setPageLoadStrategy('normal'))
      .build();

    await driver.get('https://www.selenium.dev/selenium/web/blank.html');
    await driver.quit();
import org.openqa.selenium.PageLoadStrategy
import org.openqa.selenium.chrome.ChromeDriver
import org.openqa.selenium.chrome.ChromeOptions

fun main() {
  val chromeOptions = ChromeOptions()
  chromeOptions.setPageLoadStrategy(PageLoadStrategy.NORMAL)
  val driver = ChromeDriver(chromeOptions)
  try {
    driver.get("https://www.google.com")
  }
  finally {
    driver.quit()
  }
}

eager

WebDriver ใฏใ€DOMContentLoaded ใ‚คใƒ™ใƒณใƒˆใ‚’ๆคœ็Ÿฅใ™ใ‚‹ใพใงๅพ…ๆฉŸใ—ใพใ™ใ€‚

    ChromeOptions chromeOptions = getDefaultChromeOptions();
    chromeOptions.setPageLoadStrategy(PageLoadStrategy.EAGER);
    WebDriver driver = new ChromeDriver(chromeOptions);
    options = get_default_chrome_options()
    options.page_load_strategy = 'eager'
    driver = webdriver.Chrome(options=options)
            var chromeOptions = new ChromeOptions();
            chromeOptions.PageLoadStrategy = PageLoadStrategy.Eager;
      options = Selenium::WebDriver::Options.chrome
      options.page_load_strategy = :eager
    let driver = new Builder()
      .forBrowser(Browser.CHROME)
      .setChromeOptions(options.setPageLoadStrategy('eager'))
      .build();

    await driver.get('https://www.selenium.dev/selenium/web/blank.html');
    await driver.quit();
import org.openqa.selenium.PageLoadStrategy
import org.openqa.selenium.chrome.ChromeDriver
import org.openqa.selenium.chrome.ChromeOptions

fun main() {
  val chromeOptions = ChromeOptions()
  chromeOptions.setPageLoadStrategy(PageLoadStrategy.EAGER)
  val driver = ChromeDriver(chromeOptions)
  try {
    driver.get("https://www.google.com")
  }
  finally {
    driver.quit()
  }
}

none

WebDriver ใฏใ€ๆœ€ๅˆใฎใƒšใƒผใ‚ธใŒใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ•ใ‚Œใ‚‹ใพใงๅพ…ๆฉŸใ—ใพใ™ใ€‚

    ChromeOptions chromeOptions = getDefaultChromeOptions();
    chromeOptions.setPageLoadStrategy(PageLoadStrategy.NONE);
    WebDriver driver = new ChromeDriver(chromeOptions);
    options = get_default_chrome_options()
    options.page_load_strategy = 'none'
    driver = webdriver.Chrome(options=options)
        [TestMethod]
        public void SetPageLoadStrategyNone()
      options = Selenium::WebDriver::Options.chrome
      options.page_load_strategy = :none
    let driver = new Builder()
      .forBrowser(Browser.CHROME)
      .setChromeOptions(options.setPageLoadStrategy('none'))
      .build();

    await driver.get('https://www.selenium.dev/selenium/web/blank.html');
    await driver.quit();
import org.openqa.selenium.PageLoadStrategy
import org.openqa.selenium.chrome.ChromeDriver
import org.openqa.selenium.chrome.ChromeOptions

fun main() {
  val chromeOptions = ChromeOptions()
  chromeOptions.setPageLoadStrategy(PageLoadStrategy.NONE)
  val driver = ChromeDriver(chromeOptions)
  try {
    driver.get("https://www.google.com")
  }
  finally {
    driver.quit()
  }
}

platformName

ใ“ใ‚Œใซใ‚ˆใ‚Šใ€ใƒชใƒขใƒผใƒˆใ‚จใƒณใƒ‰ใฎใ‚ชใƒšใƒฌใƒผใƒ†ใ‚ฃใƒณใ‚ฐใ‚ทใ‚นใƒ†ใƒ ใŒ่ญ˜ๅˆฅใ•ใ‚Œใ€ platformName ใ‚’ๅ–ๅพ—ใ™ใ‚‹ใจOSๅใŒ่ฟ”ใ•ใ‚Œใพใ™ใ€‚

ใ‚ฏใƒฉใ‚ฆใƒ‰ใƒ™ใƒผใ‚นใฎใƒ—ใƒญใƒใ‚คใƒ€ใƒผใงใฏใ€ platformName ใ‚’่จญๅฎšใ™ใ‚‹ใจใ€ใƒชใƒขใƒผใƒˆใ‚จใƒณใƒ‰ใฎOSใŒ่จญๅฎšใ•ใ‚Œใพใ™ใ€‚

	ChromeOptions chromeOptions = getDefaultChromeOptions();
	String platform = "OS X 10.6";
	chromeOptions.setPlatformName(platform);
    options = get_default_chrome_options()
    options.platform_name = 'any'
    driver = webdriver.Chrome(options=options)
      options = Selenium::WebDriver::Options.firefox
      options.platform_name = 'Windows 10'

acceptInsecureCerts

ใ“ใฎๆฉŸ่ƒฝใฏใ€ใ‚ปใƒƒใ‚ทใƒงใƒณไธญใฎใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณไธญใซใ€ๆœŸ้™ๅˆ‡ใ‚Œ๏ผˆใพใŸใฏ๏ผ‰็„กๅŠนใช TLS่จผๆ˜Žๆ›ธ ใŒไฝฟ็”จใ•ใ‚Œใฆใ„ใ‚‹ใ‹ใฉใ†ใ‹ใ‚’็ขบ่ชใ—ใพใ™ใ€‚

ๆฉŸ่ƒฝใŒ false ใซ่จญๅฎšใ•ใ‚Œใฆใ„ใ‚‹ๅ ดๅˆใ€ใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณใงใƒ‰ใƒกใ‚คใƒณ่จผๆ˜Žๆ›ธใฎๅ•้กŒใŒ็™บ็”Ÿใ™ใ‚‹ใจใ€ insecure certificate error ใŒ่ฟ”ใ•ใ‚Œใพใ™ใ€‚ true ใซ่จญๅฎšใ™ใ‚‹ใจใ€็„กๅŠนใช่จผๆ˜Žๆ›ธใฏใƒ–ใƒฉใ‚ฆใ‚ถใƒผใซใ‚ˆใฃใฆไฟก้ ผใ•ใ‚Œใพใ™ใ€‚

ใ™ในใฆใฎ่‡ชๅทฑ็ฝฒๅ่จผๆ˜Žๆ›ธใฏใ€ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใงใ“ใฎๆฉŸ่ƒฝใซใ‚ˆใฃใฆไฟก้ ผใ•ใ‚Œใพใ™ใ€‚ ไธ€ๅบฆ่จญๅฎšใ™ใ‚‹ใจใ€ acceptInsecureCerts Capabilityใฏใ‚ปใƒƒใ‚ทใƒงใƒณๅ…จไฝ“ใซๅฝฑ้Ÿฟใ—ใพใ™ใ€‚

    ChromeOptions chromeOptions = getDefaultChromeOptions();
    chromeOptions.setAcceptInsecureCerts(true);
    options = get_default_chrome_options()
    options.accept_insecure_certs = True
    driver = webdriver.Chrome(options=options)
      options = Selenium::WebDriver::Options.chrome
      options.accept_insecure_certs = true
    let driver = new Builder()
      .forBrowser(Browser.CHROME)
      .setChromeOptions(options.setAcceptInsecureCerts(true))
      .build();

timeouts

WebDriverใฎ ใ‚ปใƒƒใ‚ทใƒงใƒณ ใซใฏ็‰นๅฎšใฎ ใ‚ปใƒƒใ‚ทใƒงใƒณใ‚ฟใ‚คใƒ ใ‚ขใ‚ฆใƒˆ ้–“้š”ใŒ่จญๅฎšใ•ใ‚ŒใฆใŠใ‚Šใ€ ใใฎ้–“ใ€ใƒฆใƒผใ‚ถใƒผใฏใ‚นใ‚ฏใƒชใƒ—ใƒˆใฎๅฎŸ่กŒใพใŸใฏใƒ–ใƒฉใ‚ฆใ‚ถใƒผใ‹ใ‚‰ใฎๆƒ…ๅ ฑใฎๅ–ๅพ—ใฎๅ‹•ไฝœใ‚’ๅˆถๅพกใงใใพใ™ใ€‚

ๅ„ใ‚ปใƒƒใ‚ทใƒงใƒณใ‚ฟใ‚คใƒ ใ‚ขใ‚ฆใƒˆใฏใ€ไปฅไธ‹ใง่ชฌๆ˜Žใ™ใ‚‹ใ‚ˆใ†ใซใ€็•ฐใชใ‚‹ ใ‚ฟใ‚คใƒ ใ‚ขใ‚ฆใƒˆ ใฎ็ต„ใฟๅˆใ‚ใ›ใงๆง‹ๆˆใ•ใ‚Œใพใ™ใ€‚

Script Timeout:

็พๅœจใฎใƒ–ใƒฉใ‚ฆใ‚ธใƒณใ‚ฐใ‚ณใƒณใƒ†ใ‚ญใ‚นใƒˆใงๅฎŸ่กŒไธญใฎใ‚นใ‚ฏใƒชใƒ—ใƒˆใ‚’ใ„ใคไธญๆ–ญใ™ใ‚‹ใ‹ใ‚’ๆŒ‡ๅฎšใ—ใพใ™ใ€‚ ๆ–ฐใ—ใ„ใ‚ปใƒƒใ‚ทใƒงใƒณใŒWebDriverใซใ‚ˆใฃใฆไฝœๆˆใ•ใ‚Œใ‚‹ใจใ€ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฎใ‚ฟใ‚คใƒ ใ‚ขใ‚ฆใƒˆ 30,000 ใŒ่ชฒใ•ใ‚Œใพใ™ใ€‚

	ChromeOptions chromeOptions = getDefaultChromeOptions();
	Duration duration = Duration.of(5, ChronoUnit.SECONDS);
	chromeOptions.setScriptTimeout(duration);
    options = get_default_chrome_options()
    options.timeouts = { 'script': 5000 }
    driver = webdriver.Chrome(options=options)
      options = Selenium::WebDriver::Options.chrome
      options.timeouts = {script: 40_000}

Page Load Timeout:

็พๅœจใฎใƒ–ใƒฉใ‚ฆใ‚ธใƒณใ‚ฐใ‚ณใƒณใƒ†ใ‚ญใ‚นใƒˆใงWebใƒšใƒผใ‚ธใ‚’ใƒญใƒผใƒ‰ใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚‹ๆ™‚้–“้–“้š”ใ‚’ๆŒ‡ๅฎšใ—ใพใ™ใ€‚ ๆ–ฐใ—ใ„ใ‚ปใƒƒใ‚ทใƒงใƒณใŒWebDriverใซใ‚ˆใฃใฆไฝœๆˆใ•ใ‚Œใ‚‹ใจใ€ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฎใ‚ฟใ‚คใƒ ใ‚ขใ‚ฆใƒˆ 300,000 ใŒ่ชฒใ•ใ‚Œใพใ™ใ€‚ ใƒšใƒผใ‚ธใฎ่ชญใฟ่พผใฟใŒๆŒ‡ๅฎš/ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฎๆ™‚้–“ๆž ใ‚’ๅˆถ้™ใ™ใ‚‹ๅ ดๅˆใ€ใ‚นใ‚ฏใƒชใƒ—ใƒˆใฏใ€€TimeoutExceptionใ€€ใซใ‚ˆใฃใฆๅœๆญขใ•ใ‚Œใพใ™ใ€‚

	ChromeOptions chromeOptions = getDefaultChromeOptions();
	Duration duration = Duration.of(5, ChronoUnit.SECONDS);
	chromeOptions.setPageLoadTimeout(duration);
    options = get_default_chrome_options()
    options.timeouts = { 'pageLoad': 5000 }
    driver = webdriver.Chrome(options=options)
      options = Selenium::WebDriver::Options.chrome
      options.timeouts = {page_load: 400_000}

Implicit Wait Timeout

ใ“ใ‚Œใฏใ€่ฆ็ด ใ‚’ๆคœ็ดขใ™ใ‚‹ใจใใซๆš—้ป™็š„ใช่ฆ็ด ใฎๆคœ็ดขๆˆฆ็•ฅใ‚’ๅพ…ใคๆ™‚้–“ใ‚’ๆŒ‡ๅฎšใ—ใพใ™ใ€‚ ๆ–ฐใ—ใ„ใ‚ปใƒƒใ‚ทใƒงใƒณใŒWebDriverใซใ‚ˆใฃใฆไฝœๆˆใ•ใ‚Œใ‚‹ใจใ€ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฎใ‚ฟใ‚คใƒ ใ‚ขใ‚ฆใƒˆ 0 ใŒ่ชฒใ•ใ‚Œใพใ™ใ€‚

	ChromeOptions chromeOptions = getDefaultChromeOptions();
	Duration duration = Duration.of(5, ChronoUnit.SECONDS);
	chromeOptions.setImplicitWaitTimeout(duration);
    options = get_default_chrome_options()
    options.timeouts = { 'implicit': 5000 }
    driver = webdriver.Chrome(options=options)
      options = Selenium::WebDriver::Options.chrome
      options.timeouts = {implicit: 1}

unhandledPromptBehavior

็พๅœจใฎใ‚ปใƒƒใ‚ทใƒงใƒณใฎ ใƒฆใƒผใ‚ถใƒผใƒ—ใƒญใƒณใƒ—ใƒˆใƒใƒณใƒ‰ใƒฉใƒผ ใฎ็Šถๆ…‹ใ‚’ๆŒ‡ๅฎšใ—ใพใ™ใ€‚ ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใงใฏใ€ dismiss and notify (ๅดไธ‹ใ—ใฆ้€š็Ÿฅใ™ใ‚‹) ็Šถๆ…‹ ใจใชใ‚Šใพใ™ใ€‚

User Prompt Handler

ใ“ใ‚Œใฏใ€ใƒชใƒขใƒผใƒˆใ‚จใƒณใƒ‰ใงใƒฆใƒผใ‚ถใƒผใƒ—ใƒญใƒณใƒ—ใƒˆใŒ่กจ็คบใ•ใ‚ŒใŸใจใใซๅฎŸ่กŒใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚‹ใ‚ขใ‚ฏใ‚ทใƒงใƒณใ‚’ๅฎš็พฉใ—ใพใ™ใ€‚ ใ“ใ‚Œใฏใ€ unhandledPromptBehavior Capabilityใซใ‚ˆใฃใฆๅฎš็พฉใ•ใ‚Œใ€ๆฌกใฎ็Šถๆ…‹ใŒใ‚ใ‚Šใพใ™ใ€‚

  • dismiss (ๅดไธ‹)
  • accept (ๅ—ๅ…ฅ)
  • dismiss and notify (ๅดไธ‹ใ—ใฆ้€š็Ÿฅ)
  • accept and notify (ๅ—ใ‘ๅ…ฅใ‚Œใฆ้€š็Ÿฅ)
  • ignore (็„ก่ฆ–)
	ChromeOptions chromeOptions = getDefaultChromeOptions();
	chromeOptions.setUnhandledPromptBehaviour(UnexpectedAlertBehaviour.DISMISS_AND_NOTIFY);
    options = get_default_chrome_options()
    options.unhandled_prompt_behavior = 'accept'
    driver = webdriver.Chrome(options=options)
      options = Selenium::WebDriver::Options.chrome
      options.unhandled_prompt_behavior = :accept

setWindowRect

ใƒชใƒขใƒผใƒˆ ใ‚จใƒณใƒ‰ใŒใ™ในใฆใฎใ€€ใ‚ตใ‚คใ‚บๅค‰ๆ›ดใŠใ‚ˆใณๅ†้…็ฝฎ ใ‚ณใƒžใƒณใƒ‰ ใ‚’ใ‚ตใƒใƒผใƒˆใ™ใ‚‹ใ‹ใฉใ†ใ‹ใ‚’็คบใ—ใพใ™ใ€‚

   	ChromeOptions chromeOptions = getDefaultChromeOptions();
   	chromeOptions.setCapability(CapabilityType.SET_WINDOW_RECT, true);
    options = webdriver.FirefoxOptions()
    options.set_window_rect = True # Full support in Firefox
    driver = webdriver.Firefox(options=options)
      options = Selenium::WebDriver::Options.firefox
      options.set_window_rect = true

strictFileInteractability

ใ“ใฎๆ–ฐใ—ใ„capabilityใฏใ€ๅŽณๅฏ†ใช็›ธไบ’ไฝœ็”จใƒใ‚งใƒƒใ‚ฏใ‚’ input type = file ่ฆ็ด ใซ้ฉ็”จใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚‹ใ‹ใฉใ†ใ‹ใ‚’็คบใ—ใพใ™ใ€‚ ๅŽณๅฏ†ใช็›ธไบ’ไฝœ็”จใƒใ‚งใƒƒใ‚ฏใฏใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใงใ‚ชใƒ•ใซใชใฃใฆใ„ใ‚‹ใŸใ‚ใ€้š ใ—ใƒ•ใ‚กใ‚คใƒซใฎใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ‚ณใƒณใƒˆใƒญใƒผใƒซใง Element Send Keys ใ‚’ไฝฟ็”จใ™ใ‚‹ๅ ดๅˆใฎๅ‹•ไฝœใŒๅค‰ๆ›ดใ•ใ‚Œใพใ™ใ€‚

    ChromeOptions chromeOptions = getDefaultChromeOptions();
    chromeOptions.setCapability(CapabilityType.STRICT_FILE_INTERACTABILITY, true);
    options = get_default_chrome_options()
    options.strict_file_interactability = True
    driver = webdriver.Chrome(options=options)
      options = Selenium::WebDriver::Options.chrome
      options.strict_file_interactability = true

proxy

ใƒ—ใƒญใ‚ญใ‚ทใ‚ตใƒผใƒใƒผใฏใ€ใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใจใ‚ตใƒผใƒใƒผ้–“ใฎ่ฆๆฑ‚ใฎไปฒไป‹ๅฝนใจใ—ใฆๆฉŸ่ƒฝใ—ใพใ™ใ€‚ ็ฐกๅ˜ใซ่จ€ใˆใฐใ€ใƒˆใƒฉใƒ•ใ‚ฃใƒƒใ‚ฏใฏใƒ—ใƒญใ‚ญใ‚ทใ‚ตใƒผใƒใƒผใ‚’็ตŒ็”ฑใ—ใฆใ€่ฆๆฑ‚ใ—ใŸใ‚ขใƒ‰ใƒฌใ‚นใซๆˆปใ‚Šใ€ๆˆปใฃใฆใใพใ™ใ€‚

Seleniumใ‚’ไฝฟ็”จใ—ใŸ่‡ชๅ‹•ๅŒ–ใ‚นใ‚ฏใƒชใƒ—ใƒˆ็”จใฎใƒ—ใƒญใ‚ญใ‚ทใ‚ตใƒผใƒใƒผใฏใ€

  • ใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใƒˆใƒฉใƒ•ใ‚ฃใƒƒใ‚ฏใ‚’ใ‚ญใƒฃใƒ—ใƒใƒฃใ™ใ‚‹
  • ใ‚ฆใ‚งใƒ–ใ‚ตใ‚คใƒˆใซใ‚ˆใฃใฆ่กŒใ‚ใ‚ŒใŸๆจกๆ“ฌใƒใƒƒใ‚ฏใ‚จใƒณใƒ‰ใ‚’ๅ‘ผใณๅ‡บใ™
  • ่ค‡้›‘ใชใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใƒˆใƒใƒญใ‚ธใƒผใพใŸใฏๅŽณๆ ผใชไผๆฅญใฎๅˆถ้™/ใƒใƒชใ‚ทใƒผใฎไธ‹ใงใ€ๅฟ…่ฆใชWebใ‚ตใ‚คใƒˆใซใ‚ขใ‚ฏใ‚ปใ‚นใ—ใพใ™ใ€‚

ไผๆฅญ็’ฐๅขƒใงใƒ–ใƒฉใ‚ฆใ‚ถใŒURLใธใฎๆŽฅ็ถšใซๅคฑๆ•—ใ—ใŸๅ ดๅˆใ€็’ฐๅขƒใซใ‚ขใ‚ฏใ‚ปใ‚นใ™ใ‚‹ใซใฏใƒ—ใƒญใ‚ญใ‚ทใŒๅฟ…่ฆใงใ‚ใ‚‹ใ“ใจใŒๅŽŸๅ› ใงใ‚ใ‚‹ใ“ใจใŒๆœ€ใ‚‚ๅฏ่ƒฝๆ€งใŒ้ซ˜ใ„ใงใ™ใ€‚

Selenium WebDriverใฏ่จญๅฎšใ‚’ใƒ—ใƒญใ‚ญใ‚ทใ™ใ‚‹ๆ–นๆณ•ใ‚’ๆไพ›ใ—ใพใ™ใ€‚

Move Code

import org.openqa.selenium.Proxy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

public class ProxyTest {
  public static void main(String[] args) {
    Proxy proxy = new Proxy();
    proxy.setHttpProxy("<HOST:PORT>");
    ChromeOptions options = new ChromeOptions();
    options.setCapability("proxy", proxy);
    WebDriver driver = new ChromeDriver(options);
    driver.get("https://www.google.com/");
    driver.manage().window().maximize();
    driver.quit();
  }
}
    options = get_default_chrome_options()
    options.proxy = Proxy({ 'proxyType': ProxyType.MANUAL, 'httpProxy' : 'http.proxy:1234'})
    driver = webdriver.Chrome(options=options)
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

public class ProxyTest{
public static void Main() {
ChromeOptions options = new ChromeOptions();
Proxy proxy = new Proxy();
proxy.Kind = ProxyKind.Manual;
proxy.IsAutoDetect = false;
proxy.SslProxy = "<HOST:PORT>";
options.Proxy = proxy;
options.AddArgument("ignore-certificate-errors");
IWebDriver driver = new ChromeDriver(options);
driver.Navigate().GoToUrl("https://www.selenium.dev/");
}
}
      options = Selenium::WebDriver::Options.chrome
      options.proxy = Selenium::WebDriver::Proxy.new(http: 'myproxy.com:8080')
let webdriver = require('selenium-webdriver');
let chrome = require('selenium-webdriver/chrome');
let proxy = require('selenium-webdriver/proxy');
let opts = new chrome.Options();

(async function example() {
opts.setProxy(proxy.manual({http: '<HOST:PORT>'}));
let driver = new webdriver.Builder()
.forBrowser('chrome')
.setChromeOptions(opts)
.build();
try {
await driver.get("https://selenium.dev");
}
finally {
await driver.quit();
}
}());
import org.openqa.selenium.Proxy
import org.openqa.selenium.WebDriver
import org.openqa.selenium.chrome.ChromeDriver
import org.openqa.selenium.chrome.ChromeOptions

class proxyTest {
fun main() {

        val proxy = Proxy()
        proxy.setHttpProxy("<HOST:PORT>")
        val options = ChromeOptions()
        options.setCapability("proxy", proxy)
        val driver: WebDriver = ChromeDriver(options)
        driver["https://www.google.com/"]
        driver.manage().window().maximize()
        driver.quit()
    }
}
ๆœ€็ต‚ๆ›ดๆ–ฐ July 29, 2025: Adding trailing / to retrieve code from GitHub (48b97e9bf82)