Beispiel #1
0
class DriverProperty(object):
    """
    selenium webdriverのラッパー
    """
    def __init__(self, base_url=None, headless=False, browser_name='chrome'):
        """
        :param bool headless: ヘッドレスオプション
        :return:
        """
        self.driver = None
        self.base_url = base_url
        self.options = Options()
        self.options.add_argument("--ignore-certificate-errors")
        self.options.add_argument("--allow-running-insecure-content")
        self.options.add_argument("--disable-web-security")
        if headless:
            self.options.add_argument("--headless")
            self.options.add_argument("--disable-gpu")
            self.options.add_argument("--disable-desktop-notifications")
            self.options.add_argument("--disable-extensions")
        self._open_browser(browser_name=browser_name.lower())

    def set_driver(self, driver=None):
        """
        driverの引き継ぎに使用する
        :param selenium.webdriver driver: 引き継ぎ対象
        :return: DriverProperty self
        """
        self.driver = driver
        return self

    def _open_browser(self, browser_name):
        """
        :return: webdriver
        """
        if browser_name == 'chrome':
            if self.options is not None:
                self.driver = Chrome(chrome_options=self.options)
            else:
                self.driver = Chrome()
        elif browser_name == 'ie':
            self.driver = Ie()
        elif browser_name == 'safari':
            self.driver = Safari()
        elif browser_name == 'edge':
            self.driver = Edge()
        elif browser_name == 'firefox':
            self.driver = Firefox()
        else:
            raise Exception('Faild input browser name')
        self.driver.get(self.base_url)
        return self.driver

    def visit(self, url):
        """
        :param str url:
        :return: self
        """
        if url is None:
            raise Exception('input url.')
        try:
            self.driver.get(url)
        except WebDriverException:
            print('No such a url')
            self.driver.quit()

    def current_url(self):
        """
        :return: string
        """
        return self.driver.current_url()

    def close(self):
        """
        driverはクローズしない
        :return:
        """
        self.driver.close()

    def refresh(self):
        """
        現在のURLを開き直す
        :return:
        """
        self.driver.refresh()

    def authentication(self, user_name, pass_word):
        """
        ログイン認証を行う
        :param str user_name: ユーザ名
        :param str pass_word: パスワード
        :return:
        """
        self.driver.switch_to.alert.authenticate(user_name, pass_word)

    def accept(self):
        """
        警告を承認
        :return:
        """
        try:
            Alert(self.driver).accept()
        except NoAlertPresentException:
            pass