Python selenium.common.exceptions 模块,WebDriverException() 实例源码

我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用selenium.common.exceptions.WebDriverException()

项目:InstagramLocationScraper    作者:VoodaGod    | 项目源码 | 文件源码
def __init__(self, profilePath, driverPath):
        options = webdriver.ChromeOptions()
        prefs = {"profile.managed_default_content_settings.images":2}
        options.add_argument("user-data-dir=" + profilePath)
        options.add_argument("headless")
        options.add_argument('window-size=1920x1080')
        options.add_experimental_option("prefs", prefs)

        try:
            self.driver = webdriver.Chrome(executable_path=driverPath, chrome_options=options)
        except WebDriverException:
            print("failed to start driver at " + driverPath)
            self.inUse = True #scraper with no driver is not ready to handle new job
            #traceback.print_exc()

        self.inUse = False #if False, is ready to handle new job
        self.bannerClosed = False #email banner only needs to be closed on first load
        self.timeLimit  = datetime.now() + timedelta(minutes=TIMEOUT_MINUTES)
项目:flasky    作者:RoseOu    | 项目源码 | 文件源码
def start(self):
        """
        Starts PhantomJS with GhostDriver.

        :Exceptions:
         - WebDriverException : Raised either when it can't start the service
           or when it can't connect to the service
        """
        try:
            self.process = subprocess.Popen(self.service_args, stdin=subprocess.PIPE,
                                            close_fds=platform.system() != 'Windows',
                                            stdout=self._log, stderr=self._log)

        except Exception as e:
            raise WebDriverException("Unable to start phantomjs with ghostdriver.", e)
        count = 0
        while not utils.is_connectable(self.port):
            count += 1
            time.sleep(1)
            if count == 30:
                 raise WebDriverException("Can not connect to GhostDriver")
项目:SerpScrap    作者:ecoron    | 项目源码 | 文件源码
def _find_next_page_element(self):
        """Finds the element that locates the next page for any search engine.

        Returns:
            The element that needs to be clicked to get to the next page or a boolean value to
            indicate an error condition.
        """
        if self.search_type == 'normal':
            selector = self.next_page_selectors[self.search_engine_name]
            try:
                # wait until the next page link is clickable
                WebDriverWait(self.webdriver, 5).until(EC.element_to_be_clickable((By.CSS_SELECTOR, selector)))
            except (WebDriverException, TimeoutException):
                self._save_debug_screenshot()
                # raise Exception('{}: Cannot locate next page element: {}'.format(self.name, str(e)))
            try:
                return self.webdriver.find_element_by_css_selector(selector)
            except Exception:
                logger.error('failed find_element_by_css_selector, sleep 30 sec')
                time.sleep(30)
                pass

        elif self.search_type == 'image':
            self.page_down()
            if self.search_engine_name == 'google':
                return self.webdriver.find_element_by_css_selector('input._kvc')
            else:
                return True
项目:mos-horizon    作者:Mirantis    | 项目源码 | 文件源码
def __init__(self, firefox_profile=None, firefox_binary=None, timeout=30,
                 desired_capabilities=dc.DesiredCapabilities.FIREFOX,
                 proxy=None):
        try:
            if firefox_profile is None:
                firefox_profile = firefox.webdriver.FirefoxProfile()
            self.setup_profile(firefox_profile)
            super(WebDriver, self).__init__(
                firefox_profile, FirefoxBinary(), timeout,
                desired_capabilities, proxy)
        except selenium_exceptions.WebDriverException:
            # If we can't start, cleanup profile
            shutil.rmtree(self.profile.path)
            if self.profile.tempfolder is not None:
                shutil.rmtree(self.profile.tempfolder)
            raise
项目:devsecops-example-helloworld    作者:boozallen    | 项目源码 | 文件源码
def _upload(self, filename):
        fp = IOStream()
        zipped = zipfile.ZipFile(fp, 'w', zipfile.ZIP_DEFLATED)
        zipped.write(filename, os.path.split(filename)[1])
        zipped.close()
        content = base64.encodestring(fp.getvalue())
        if not isinstance(content, str):
            content = content.decode('utf-8')
        try:
            return self._execute(Command.UPLOAD_FILE,
                            {'file': content})['value']
        except WebDriverException as e:
            if "Unrecognized command: POST" in e.__str__():
                return filename
            elif "Command not found: POST " in e.__str__():
                return filename
            elif '{"status":405,"value":["GET","HEAD","DELETE"]}' in e.__str__():
                return filename
            else:
                raise e
项目:devsecops-example-helloworld    作者:boozallen    | 项目源码 | 文件源码
def file_detector(self, detector):
        """
        Set the file detector to be used when sending keyboard input.
        By default, this is set to a file detector that does nothing.

        see FileDetector
        see LocalFileDetector
        see UselessFileDetector

        :Args:
         - detector: The detector to use. Must not be None.
        """
        if detector == None:
            raise WebDriverException("You may not set a file detector that is null")
        if not isinstance(detector, FileDetector):
            raise WebDriverException("Detector has to be instance of FileDetector")
        self._file_detector = detector;
项目:devsecops-example-helloworld    作者:boozallen    | 项目源码 | 文件源码
def _wait_until_connectable(self, timeout=30):
        """Blocks until the extension is connectable in the firefox."""
        count = 0
        while not utils.is_connectable(self.profile.port):
            if self.process.poll() is not None:
                # Browser has exited
                raise WebDriverException("The browser appears to have exited "
                      "before we could connect. If you specified a log_file in "
                      "the FirefoxBinary constructor, check it for details.")
            if count >= timeout:
                self.kill()
                raise WebDriverException("Can't load the profile. Profile "
                      "Dir: %s If you specified a log_file in the "
                      "FirefoxBinary constructor, check it for details."
                      % (self.profile.path))
            count += 1
            time.sleep(1)
        return True
项目:warriorframework    作者:warriorframework    | 项目源码 | 文件源码
def _make_ff(self, webdriver_remote_url, desired_capabilites, profile_dir,
                 binary, gecko_path):
        """Create an instance of firefox browser"""
        try:
            if webdriver_remote_url:
                browser = self._create_remote_web_driver(
                        webdriver.DesiredCapabilities.FIREFOX,
                        webdriver_remote_url, desired_capabilites,
                        profile_dir)
            else:
                ff_capabilities = webdriver.DesiredCapabilities.FIREFOX
                if ff_capabilities['marionette']:
                    ff_capabilities['acceptInsecureCerts'] = True
                    ffbinary = FirefoxBinary(binary)
                    browser = webdriver.Firefox(firefox_binary=ffbinary,
                                                firefox_profile=profile_dir,
                                                executable_path=gecko_path)
                else:
                    browser = webdriver.Firefox(firefox_profile=profile_dir)
            return browser
        except WebDriverException as e:
            if "executable needs to be in PATH" in str(e):
                print_error("Please provide path for geckodriver executable")
            elif "Expected browser binary location" in str(e):
                print_error("Please provide path of firefox executable")
项目:warriorframework    作者:warriorframework    | 项目源码 | 文件源码
def _generic_make_browser(self, webdriver_type, desired_cap_type,
                              webdriver_remote_url, desired_caps, binary):
        """most of the make browser functions just call this function which creates the
        appropriate web-driver"""
        try:
            if not webdriver_remote_url:
                if binary is not None:
                    browser = webdriver_type(binary)
                else:
                    browser = webdriver_type()
            else:
                browser = self._create_remote_web_driver(desired_cap_type,
                                                         webdriver_remote_url,
                                                         desired_caps)
            return browser
        except WebDriverException as e:
            if "executable needs to be in PATH" in str(e):
                print_error("Please provide path for chrome driver executable")
项目:micromasters    作者:mitodl    | 项目源码 | 文件源码
def click_when_loaded(self, by, value, retries=DEFAULT_RETRY_COUNT):
        """
        Helper method to tell the driver to wait until an element is loaded, then click it.
        Since clicking on page elements is the most common source of test flakiness in our selenium suite, this
        includes some functionality for retrying the click some number of times if specific exceptions are raised.
        """
        retries_remaining = retries
        wait = self.wait()
        while True:
            try:
                return wait.until(
                    lambda driver: driver.find_element(by, value)
                ).click()
            except WebDriverException:
                if retries_remaining > 0:
                    retries_remaining -= 1
                else:
                    raise
项目:seproxer    作者:Rastii    | 项目源码 | 文件源码
def get_results(self,
                    url: str,
                    controller_wait: t.Optional[ControllerWait]=None) -> ControllerUrlResult:
        try:
            self._webdriver.get(url)

            # If we have a specified controller wait, let's wait until the desired state is reached
            # before auditing states and validators
            if controller_wait:
                try:
                    controller_wait.wait_until()
                except ControllerWaitTimeout:
                    logger.warning("ControllerWait state not reached for {}".format(url))

            # Perform our auditors -- also block until certain states are reached
            state_results = self._loaded_state_manager.get_state_results(self._webdriver)
            # After our the page reaches a testable state, now let's run all our validators on it
            # TODO: Consider dependant graphs for validators based on states
            validator_results = self._validator_manager.validate(self._webdriver)
        except selenium_exceptions.WebDriverException as e:
            logging.exception("Failed result attempt for {}".format(url))
            raise ControllerResultsFailed(e)

        return ControllerUrlResult(state_results, validator_results)
项目:kolla-kubernetes    作者:openstack    | 项目源码 | 文件源码
def getDriver(self):
        count = 0
        while(True):
            try:
                ce = "http://%s:4444/wd/hub" % os.environ["HUB"]
                driver = webdriver.Remote(
                    command_executor=ce,
                    desired_capabilities={
                        "browserName": os.environ.get("browser", "firefox"),
                        "platform": "Linux"
                    }
                )
                return driver
            except WebDriverException as e:
                s = "%s" % e
                print("Got exception %s" % s)
                print("%s" % dir(s))
                if "Empty pool of VM for setup Capabilities" not in s:
                    raise
                time.sleep(5)
            if count == 60:
                raise Exception("Time out trying to get a browser")
            count += 1
项目:flasky    作者:RoseOu    | 项目源码 | 文件源码
def _upload(self, filename):
        fp = IOStream()
        zipped = zipfile.ZipFile(fp, 'w', zipfile.ZIP_DEFLATED)
        zipped.write(filename, os.path.split(filename)[1])
        zipped.close()
        content = base64.encodestring(fp.getvalue())
        if not isinstance(content, str):
            content = content.decode('utf-8')
        try:
            return self._execute(Command.UPLOAD_FILE,
                            {'file': content})['value']
        except WebDriverException as e:
            if "Unrecognized command: POST" in e.__str__():
                return filename
            elif "Command not found: POST " in e.__str__():
                return filename
            elif '{"status":405,"value":["GET","HEAD","DELETE"]}' in e.__str__():
                return filename
            else:
                raise e
项目:flasky    作者:RoseOu    | 项目源码 | 文件源码
def file_detector(self, detector):
        """
        Set the file detector to be used when sending keyboard input.
        By default, this is set to a file detector that does nothing.

        see FileDetector
        see LocalFileDetector
        see UselessFileDetector

        :Args:
         - detector: The detector to use. Must not be None.
        """
        if detector == None:
            raise WebDriverException("You may not set a file detector that is null")
        if not isinstance(detector, FileDetector):
            raise WebDriverException("Detector has to be instance of FileDetector")
        self._file_detector = detector;
项目:flasky    作者:RoseOu    | 项目源码 | 文件源码
def start(self):
        """
        Starts the OperaDriver Service. 

        :Exceptions:
         - WebDriverException : Raised either when it can't start the service
           or when it can't connect to the service
        """
        try:
            self.process = subprocess.Popen(["java", "-jar", self.path, "-port", "%s" % self.port])
        except:
            raise WebDriverException(
                "OperaDriver executable needs to be available in the path.")
        time.sleep(10)
        count = 0
        while not utils.is_connectable(self.port):
            count += 1
            time.sleep(1)
            if count == 30:
                 raise WebDriverException("Can not connect to the OperaDriver")
项目:flasky    作者:RoseOu    | 项目源码 | 文件源码
def _wait_until_connectable(self):
        """Blocks until the extension is connectable in the firefox."""
        count = 0
        while not utils.is_connectable(self.profile.port):
            if self.process.poll() is not None:
                # Browser has exited
                raise WebDriverException("The browser appears to have exited "
                      "before we could connect. If you specified a log_file in "
                      "the FirefoxBinary constructor, check it for details.")
            if count == 30:
                self.kill()
                raise WebDriverException("Can't load the profile. Profile "
                      "Dir: %s If you specified a log_file in the "
                      "FirefoxBinary constructor, check it for details.")
            count += 1
            time.sleep(1)
        return True
项目:leetcode    作者:thomasyimgit    | 项目源码 | 文件源码
def get_property(self, name):
        """
        Gets the given property of the element.

        :Args:
            - name - Name of the property to retrieve.

        Example::

            # Check if the "active" CSS class is applied to an element.
            text_length = target_element.get_property("text_length")
        """
        try:
            return self._execute(Command.GET_ELEMENT_PROPERTY, {"name": name})["value"]
        except WebDriverException:
            # if we hit an end point that doesnt understand getElementProperty lets fake it
            return self.parent.execute_script('return arguments[0][arguments[1]]', self, name)
项目:leetcode    作者:thomasyimgit    | 项目源码 | 文件源码
def _upload(self, filename):
        fp = IOStream()
        zipped = zipfile.ZipFile(fp, 'w', zipfile.ZIP_DEFLATED)
        zipped.write(filename, os.path.split(filename)[1])
        zipped.close()
        content = base64.encodestring(fp.getvalue())
        if not isinstance(content, str):
            content = content.decode('utf-8')
        try:
            return self._execute(Command.UPLOAD_FILE, {'file': content})['value']
        except WebDriverException as e:
            if "Unrecognized command: POST" in e.__str__():
                return filename
            elif "Command not found: POST " in e.__str__():
                return filename
            elif '{"status":405,"value":["GET","HEAD","DELETE"]}' in e.__str__():
                return filename
            else:
                raise e
项目:crawler_sqlmap    作者:CvvT    | 项目源码 | 文件源码
def run(self):
        """??????

        ????????????????
        :return:
        """
        while True:
            try:
                self.scheduler.run(self.browser, self.sqlScanner, self.setting)
                break
            except WebDriverException:
                if execute("ps | awk '{print $4}' | grep firefox"):  # still alive or not
                    self.scheduler.flush()
                    logger.error(traceback.format_exc())
                    break
                # restart headless browser
                self.initBrowser(self.proxy)
            except:
                logger.error(traceback.format_exc())
                self.scheduler.flush()
                break
项目:ShuoshuoMonitor    作者:aploium    | 项目源码 | 文件源码
def _upload(self, filename):
        fp = IOStream()
        zipped = zipfile.ZipFile(fp, 'w', zipfile.ZIP_DEFLATED)
        zipped.write(filename, os.path.split(filename)[1])
        zipped.close()
        content = base64.encodestring(fp.getvalue())
        if not isinstance(content, str):
            content = content.decode('utf-8')
        try:
            return self._execute(Command.UPLOAD_FILE,
                            {'file': content})['value']
        except WebDriverException as e:
            if "Unrecognized command: POST" in e.__str__():
                return filename
            elif "Command not found: POST " in e.__str__():
                return filename
            elif '{"status":405,"value":["GET","HEAD","DELETE"]}' in e.__str__():
                return filename
            else:
                raise e
项目:ShuoshuoMonitor    作者:aploium    | 项目源码 | 文件源码
def file_detector(self, detector):
        """
        Set the file detector to be used when sending keyboard input.
        By default, this is set to a file detector that does nothing.

        see FileDetector
        see LocalFileDetector
        see UselessFileDetector

        :Args:
         - detector: The detector to use. Must not be None.
        """
        if detector == None:
            raise WebDriverException("You may not set a file detector that is null")
        if not isinstance(detector, FileDetector):
            raise WebDriverException("Detector has to be instance of FileDetector")
        self._file_detector = detector;
项目:ShuoshuoMonitor    作者:aploium    | 项目源码 | 文件源码
def _wait_until_connectable(self, timeout=30):
        """Blocks until the extension is connectable in the firefox."""
        count = 0
        while not utils.is_connectable(self.profile.port):
            if self.process.poll() is not None:
                # Browser has exited
                raise WebDriverException("The browser appears to have exited "
                      "before we could connect. If you specified a log_file in "
                      "the FirefoxBinary constructor, check it for details.")
            if count >= timeout:
                self.kill()
                raise WebDriverException("Can't load the profile. Profile "
                      "Dir: %s If you specified a log_file in the "
                      "FirefoxBinary constructor, check it for details."
                      % (self.profile.path))
            count += 1
            time.sleep(1)
        return True
项目:kumodocs    作者:kumofx    | 项目源码 | 文件源码
def start_driver(self):
        try:
            driver = self.find_chromedriver()
        except WebDriverException:
            logger.error('Unable to locate chromedriver')
            time.sleep(0.1)
            download = raw_input('\nNo chrome driver found.  Download? (y/n): ')
            if download.lower().startswith('y'):
                self.download_chromedriver()
                try:
                    driver = webdriver.Chrome(executable_path=self.chrome_path)
                except WebDriverException as e:
                    if 'cannot find' in e.msg:
                        logger.critical('Could not start Chrome browser')
                        raise SystemExit('Forms log cannot be retrieved without Chrome and chromedriver.')
                    else:
                        logger.exception('Cannot start the Chrome browser')
                        raise SystemExit('Forms log cannot be retrieved without Chrome and chromedriver.')

            else:
                raise SystemExit('Forms log cannot be retrieved without Chrome and chromedriver.')

        return driver
项目:taktyk    作者:kosior    | 项目源码 | 文件源码
def execute(self):
        logging.info('...uruchamianie SeleniumStrategy')
        logging.info('...uruchamianie przegl?darki - %s', settings.BROWSER)
        self.open_browser()
        try:
            self.driver.get(settings.LOGIN_URL)
            self.log_in()
            logging.info('...pobieranie numerów id')
            ids = self.get_ids()
            self.driver.quit()
            logging.info('...generowanie wpisów')
            return self.get_content_by_ids(ids)
        except WebDriverException:
            logging.warning('Logowanie nie powiod?o si?.')
            try:
                self.driver.quit()
            except WebDriverException:
                pass
            raise SystemExit
项目:amazon_order_history_scraper    作者:drewctate    | 项目源码 | 文件源码
def _upload(self, filename):
        fp = IOStream()
        zipped = zipfile.ZipFile(fp, 'w', zipfile.ZIP_DEFLATED)
        zipped.write(filename, os.path.split(filename)[1])
        zipped.close()
        content = base64.encodestring(fp.getvalue())
        if not isinstance(content, str):
            content = content.decode('utf-8')
        try:
            return self._execute(Command.UPLOAD_FILE, {'file': content})['value']
        except WebDriverException as e:
            if "Unrecognized command: POST" in e.__str__():
                return filename
            elif "Command not found: POST " in e.__str__():
                return filename
            elif '{"status":405,"value":["GET","HEAD","DELETE"]}' in e.__str__():
                return filename
            else:
                raise e
项目:amazon_order_history_scraper    作者:drewctate    | 项目源码 | 文件源码
def file_detector(self, detector):
        """
        Set the file detector to be used when sending keyboard input.
        By default, this is set to a file detector that does nothing.

        see FileDetector
        see LocalFileDetector
        see UselessFileDetector

        :Args:
         - detector: The detector to use. Must not be None.
        """
        if detector is None:
            raise WebDriverException("You may not set a file detector that is null")
        if not isinstance(detector, FileDetector):
            raise WebDriverException("Detector has to be instance of FileDetector")
        self._file_detector = detector
项目:amazon_order_history_scraper    作者:drewctate    | 项目源码 | 文件源码
def _wait_until_connectable(self, timeout=30):
        """Blocks until the extension is connectable in the firefox."""
        count = 0
        while not utils.is_connectable(self.profile.port):
            if self.process.poll() is not None:
                # Browser has exited
                raise WebDriverException(
                    "The browser appears to have exited "
                    "before we could connect. If you specified a log_file in "
                    "the FirefoxBinary constructor, check it for details.")
            if count >= timeout:
                self.kill()
                raise WebDriverException(
                    "Can't load the profile. Profile "
                    "Dir: %s If you specified a log_file in the "
                    "FirefoxBinary constructor, check it for details."
                    % (self.profile.path))
            count += 1
            time.sleep(1)
        return True
项目:reahl    作者:reahl    | 项目源码 | 文件源码
def new_chrome_driver(self):
        try:
            wd = webdriver.Chrome(chrome_options=self.chrome_options) #, service_args=["--verbose", "--log-path=/tmp/chromedriver.log"]
        except WebDriverException as ex:
            if ex.msg.startswith('Unable to either launch or connect to Chrome'):
                ex.msg += '  *****NOTE****: On linux, chrome needs write access to /dev/shm.'
                ex.msg += ' This is often not the case when you are running inside a *chroot*.'
                ex.msg += ' To fix, add the following line in the chroot\'s /etc/fstab: '
                ex.msg += ' "tmpfs /dev/shm tmpfs rw,noexec,nosuid,nodev 0 0" '
                ex.msg += ' .... and then run sudo mount /dev/shm '
                ex.msg += '\n\n ***ALTERNATIVE*** An alternative solution (when using schroot) is'
                ex.msg += ' to make sure that /etc/schroot/default/fstab contain a line for /dev/shm.'
                ex.msg += ' (usually it is commented out)'
            raise
        self.reahl_server.install_handler(wd)
        return wd
项目:webapp    作者:superchilli    | 项目源码 | 文件源码
def _upload(self, filename):
        fp = IOStream()
        zipped = zipfile.ZipFile(fp, 'w', zipfile.ZIP_DEFLATED)
        zipped.write(filename, os.path.split(filename)[1])
        zipped.close()
        content = base64.encodestring(fp.getvalue())
        if not isinstance(content, str):
            content = content.decode('utf-8')
        try:
            return self._execute(Command.UPLOAD_FILE,
                            {'file': content})['value']
        except WebDriverException as e:
            if "Unrecognized command: POST" in e.__str__():
                return filename
            elif "Command not found: POST " in e.__str__():
                return filename
            elif '{"status":405,"value":["GET","HEAD","DELETE"]}' in e.__str__():
                return filename
            else:
                raise e
项目:webapp    作者:superchilli    | 项目源码 | 文件源码
def file_detector(self, detector):
        """
        Set the file detector to be used when sending keyboard input.
        By default, this is set to a file detector that does nothing.

        see FileDetector
        see LocalFileDetector
        see UselessFileDetector

        :Args:
         - detector: The detector to use. Must not be None.
        """
        if detector == None:
            raise WebDriverException("You may not set a file detector that is null")
        if not isinstance(detector, FileDetector):
            raise WebDriverException("Detector has to be instance of FileDetector")
        self._file_detector = detector;
项目:webapp    作者:superchilli    | 项目源码 | 文件源码
def start(self):
        """
        Starts PhantomJS with GhostDriver.

        :Exceptions:
         - WebDriverException : Raised either when it can't start the service
           or when it can't connect to the service
        """
        try:
            self.process = subprocess.Popen(self.service_args, stdin=subprocess.PIPE,
                                            close_fds=platform.system() != 'Windows',
                                            stdout=self._log, stderr=self._log)

        except Exception as e:
            raise WebDriverException("Unable to start phantomjs with ghostdriver.", e)
        count = 0
        while not utils.is_connectable(self.port):
            count += 1
            time.sleep(1)
            if count == 30:
                 raise WebDriverException("Can not connect to GhostDriver")
项目:webapp    作者:superchilli    | 项目源码 | 文件源码
def start(self):
        """
        Starts the OperaDriver Service. 

        :Exceptions:
         - WebDriverException : Raised either when it can't start the service
           or when it can't connect to the service
        """
        try:
            self.process = subprocess.Popen(["java", "-jar", self.path, "-port", "%s" % self.port])
        except:
            raise WebDriverException(
                "OperaDriver executable needs to be available in the path.")
        time.sleep(10)
        count = 0
        while not utils.is_connectable(self.port):
            count += 1
            time.sleep(1)
            if count == 30:
                 raise WebDriverException("Can not connect to the OperaDriver")
项目:webapp    作者:superchilli    | 项目源码 | 文件源码
def _wait_until_connectable(self):
        """Blocks until the extension is connectable in the firefox."""
        count = 0
        while not utils.is_connectable(self.profile.port):
            if self.process.poll() is not None:
                # Browser has exited
                raise WebDriverException("The browser appears to have exited "
                      "before we could connect. If you specified a log_file in "
                      "the FirefoxBinary constructor, check it for details.")
            if count == 30:
                self.kill()
                raise WebDriverException("Can't load the profile. Profile "
                      "Dir: %s If you specified a log_file in the "
                      "FirefoxBinary constructor, check it for details.")
            count += 1
            time.sleep(1)
        return True
项目:python_selenium_astride    作者:reclamador    | 项目源码 | 文件源码
def _click_action(self, locator, timeout=10.0):
        driver = self.driver
        try:
            element = WebDriverWait(driver, float(timeout)).until(EC.element_to_be_clickable(locator),
                                                                  self._get_trace())
        except StaleElementReferenceException:
            driver.implicitly_wait(2)
            element = WebDriverWait(driver, float(timeout)).until(EC.element_to_be_clickable(locator),
                                                                  self._get_trace())
        except WebDriverException:
            driver.implicitly_wait(1)
            element = WebDriverWait(driver, float(timeout)).until(EC.element_to_be_clickable(locator),
                                                                  self._get_trace())
        try:
            element.click()
        except WebDriverException:
            sleep(1)
            element = WebDriverWait(driver, float(timeout)).until(EC.element_to_be_clickable(locator),
                                                                  self._get_trace())
            element.click()
项目:webnuke    作者:bugbound    | 项目源码 | 文件源码
def execute_javascript(self, javascript):
        self.install_custom_javascript_functions()
        try:
            amended_javascript="""window.webnuke = function(){"""+javascript+""";}; webnuke(); return window.console.flushOutput() """
            result = self.driver.execute_script(amended_javascript)
            if result is not None:
                for result_line in result:
                    print result_line
        except WebDriverException:
            # ignore any web driver errors
            ##print "ERROR with webdriver"
            #print javascript
            #print ''
            pass
        except:
            raise

        print ''
项目:webnuke    作者:bugbound    | 项目源码 | 文件源码
def execute_javascript(self, driver, javascript):
        self.install_custom_javascript_functions(driver)
        try:
            amended_javascript="""window.wn_webnuke = function(){"""+javascript+""";}; wn_webnuke(); return window.console.flushOutput() """
            result = driver.execute_script(amended_javascript)
            if result is not None:
                for result_line in result:
                    print result_line
        except WebDriverException as e:
            print "ERROR with webdriver: %s"%str(e)
            print javascript
            print ''
            pass
        except:
            raise

        print ''
项目:appium    作者:fengshuai198904    | 项目源码 | 文件源码
def start_app_driver(self):
        """This is a docstring"""
        try:


            while not appiumserver.is_running():
                appiumserver.re_start_server()
                sleep(1)
            else:
                if self.driver is None:
                    self.mutex.acquire()
                    try:
                        print "begin start AppDriver"
                        self.driver = webdriver.Remote(self.baseUrl, self.desired_capabilities)
                        print "start AppDriver success"
                    except urllib2.URLError as e:
                        self.driver = None
                        print e
                    self.mutex.release()

                return self.driver
        except WebDriverException:
            raise e
项目:winnaker    作者:target    | 项目源码 | 文件源码
def click_stubborn(driver, e, xpath):
    logging.debug("Starting stubborn clicks")
    MAX_ATTEMPT = 6
    attempt = 0
    while attempt < MAX_ATTEMPT:
        try:
            for i in range(10):
                attempt += 1
                e.click()
                break
            # breaks if no exception happens
            break
        except StaleElementReferenceException:
            a_nice_refresh(driver)
            e = wait_for_xpath_presence(driver, xpath)
        except WebDriverException:
            break
    return e
项目:iguana    作者:iguana-project    | 项目源码 | 文件源码
def WebElement_click(self):
    """
    if element.click() fails with selenium.common.exceptions.WebDriverException, scroll down and try again
    """
    try:
        WebElement.old_click(self)
    except WebDriverException as e:
        if "Element is not clickable at point" in str(e):
            self.parent.execute_script("arguments[0].scrollIntoView();", self)
            WebElement.old_click(self)
        else:
            # reraise exception after enough tries
            self.parent.get_screenshot_as_file('screenshot.png')
            raise

# monkey patch the WebElement class
项目:brush    作者:chenshiyang2015    | 项目源码 | 文件源码
def click_search_url(cls, items):

        content = env.threadlocal.BROWSER.find_element_by_css_selector("div[id=\"content_left\"]")
        links = content.find_elements_by_tag_name("a")
        i = 0

        for link in links:
            if link.get_attribute('class') == "c-showurl":
                if i in items:
                    log.step_normal("????item: [%s]" % i)
                    log.step_normal("????url?[%s], ??????: [%s]" % (link.get_attribute('href'), link.text))

                    try:
                        link.click()
                        random.randint(3, 7)
                        WebBrowser.SwitchToNewPopWindow()
                        WebBrowser.SwitchToDefaultWindow()
                        log.step_normal('?????????')
                    except (TimeoutException, WebDriverException) as e:
                        log.step_normal('??????---> %s' % e)
                        WebBrowser.SwitchToDefaultWindow()

                i = i + 1

    #??????????????
项目:rstviewer    作者:arne-cl    | 项目源码 | 文件源码
def rs3topng(rs3_filepath, png_filepath=None):
    """Convert a RS3 file into a PNG image of the RST tree.

    If no output filename is given, the PNG image is returned
    as a string (which is useful for embedding).
    """
    try:
        from selenium import webdriver
        from selenium.common.exceptions import WebDriverException
    except ImportError:
        raise ImportError(
            'Please install selenium: pip install selenium')

    html_str = rs3tohtml(rs3_filepath)

    temp = tempfile.NamedTemporaryFile(suffix='.html', delete=False)
    temp.write(html_str.encode('utf8'))
    temp.close()

    try:
        driver = webdriver.PhantomJS()
    except WebDriverException as err:
        raise WebDriverException(
           'Please install phantomjs: http://phantomjs.org/\n' + err.msg)

    driver.get(temp.name)
    os.unlink(temp.name)

    png_str = driver.get_screenshot_as_png()
    if png_filepath:
        with open(png_filepath, 'w') as png_file:
            png_file.write(png_str)
    else:
        return png_str
项目:pyselenium-js    作者:neetjn    | 项目源码 | 文件源码
def exit(self):
        try:
            self.browser.stop_client()
        except (WebDriverException, AttributeError):
            warn('Assumed use of a local webdriver')
        finally:
            self.browser.quit()
项目:pyselenium-js    作者:neetjn    | 项目源码 | 文件源码
def exit(self):
        try:
            self.browser.stop_client()
        except (WebDriverException, AttributeError):
            warn('Assumed use of a local webdriver')
        finally:
            self.browser.quit()
项目:pyselenium-js    作者:neetjn    | 项目源码 | 文件源码
def exit(self):
        try:
            self.browser.stop_client()
        except (WebDriverException, AttributeError):
            warn('Assumed use of a local webdriver')
        finally:
            self.browser.quit()
项目:pyselenium-js    作者:neetjn    | 项目源码 | 文件源码
def exit(self):
        try:
            self.browser.stop_client()
        except (WebDriverException, AttributeError):
            warn('Assumed use of a local webdriver')
        finally:
            self.browser.quit()
项目:pyselenium-js    作者:neetjn    | 项目源码 | 文件源码
def exit(self):
        try:
            self.browser.stop_client()
        except (WebDriverException, AttributeError):
            warn('Assumed use of a local webdriver')
        finally:
            self.browser.quit()
项目:pyselenium-js    作者:neetjn    | 项目源码 | 文件源码
def exit(self):
        try:
            self.browser.stop_client()
        except (WebDriverException, AttributeError):
            warn('Assumed use of a local webdriver')
        finally:
            self.browser.quit()
项目:SerpScrap    作者:ecoron    | 项目源码 | 文件源码
def _get_Chrome(self):
        try:
            chrome_ops = webdriver.ChromeOptions()
            if self.proxy:
                chrome_ops = webdriver.ChromeOptions()
                chrome_ops.add_argument(
                    '--proxy-server={}://{}:{}'.format(
                        self.proxy.proto,
                        self.proxy.host,
                        self.proxy.port
                    )
                )
                self.webdriver = webdriver.Chrome(
                    executable_path=self.config['executable_path'],
                    chrome_options=chrome_ops
                )

            chrome_ops.add_argument('--no-sandbox')
            chrome_ops.add_argument('--start-maximized')
            chrome_ops.add_argument(
                '--window-position={},{}'.format(
                    randint(10, 30),
                    randint(10, 30)
                )
            )
            chrome_ops.add_argument(
                '--window-size={},{}'.format(
                    randint(800, 1024),
                    randint(600, 900)
                )
            )
            self.webdriver = webdriver.Chrome(
                executable_path=self.config['executable_path'],
                chrome_options=chrome_ops
            )
            return True
        except WebDriverException:
            raise
        return False
项目:SerpScrap    作者:ecoron    | 项目源码 | 文件源码
def _get_PhantomJS(self):
        try:
            service_args = []

            if self.proxy:
                service_args.extend([
                    '--proxy={}:{}'.format(self.proxy.host, self.proxy.port),
                    '--proxy-type={}'.format(self.proxy.proto),
                ])

                if self.proxy.username and self.proxy.password:
                    service_args.append(
                        '--proxy-auth={}:{}'.format(
                            self.proxy.username,
                            self.proxy.password
                        )
                    )

            useragent = random_user_agent(
                mobile=False
            )
            logger.info('useragent: {}'.format(useragent))
            dcap = dict(DesiredCapabilities.PHANTOMJS)
            dcap["phantomjs.page.settings.userAgent"] = useragent
            try:
                self.webdriver = webdriver.PhantomJS(
                    executable_path=self.config['executable_path'],
                    service_args=service_args,
                    desired_capabilities=dcap
                )
                return True
            except (ConnectionError, ConnectionRefusedError, ConnectionResetError) as err:
                logger.error(err)
                return False
        except WebDriverException as e:
            logger.error(e)
        return False
项目:SerpScrap    作者:ecoron    | 项目源码 | 文件源码
def _goto_next_page(self):
        """
        Click the next page element,

        Returns:
            The url of the next page or False if there is no such url
                (end of available pages for instance).
        """
        next_url = ''
        element = self._find_next_page_element()

        if hasattr(element, 'click'):
            next_url = element.get_attribute('href')
            try:
                element.click()
            except WebDriverException:
                # See http://stackoverflow.com/questions/11908249/debugging-element-is-not-clickable-at-point-error
                # first move mouse to the next element, some times the element is not visibility
                selector = self.next_page_selectors[self.search_engine_name]
                if selector:
                    try:
                        next_element = WebDriverWait(self.webdriver, 5).until(
                            EC.presence_of_element_located((By.CSS_SELECTOR, selector)))
                        webdriver.ActionChains(self.webdriver).move_to_element(next_element).perform()
                        # wait until the next page link emerges
                        WebDriverWait(self.webdriver, 8).until(
                            EC.visibility_of_element_located((By.CSS_SELECTOR, selector)))
                        element = self.webdriver.find_element_by_css_selector(selector)
                        next_url = element.get_attribute('href')
                        element.click()
                    except WebDriverException:
                        pass

        # wait until the next page was loaded

        if not next_url:
            return False
        else:
            return next_url