Beispiel #1
0
def get_games_id(comp):

    dates = [d for d in date_range(START_DATE, END_DATE)]
    games_id = []

    chrome_options = Options()
    chrome_options.add_argument('--dns-prefetch-disable')
    driver = Chrome(chrome_options=chrome_options)

    for day in dates:
        driver.get(
            'http://www.espn.com.ar/futbol/resultados/_/liga/{}/fecha/{}'.
            format(comp, day)
        )

        game_link_driver = driver.find_elements_by_class_name(
            'mobileScoreboardLink  '
        )

        for game_driver in game_link_driver:
            game_id = game_driver.get_attribute('href')[46:53]
            games_id.append((game_id, day))

        driver.quit

    # print(games_id)
    return games_id
Beispiel #2
0
def checkin(info, keepOpen=False, emailBoardingPass=True):
    url = MAIN_SW_URL + '&confirmationNumber=' + info['confNum'] + \
        '&lastName=' + info['lastName'] + '&firstName=' + info['firstName']
    try:
        browser = Chrome(CHROME_DRIVER_PATH)
        browser.get(url)
        time.sleep(0.5)
        # Click the check in button
        buttonCheckIn = browser.find_element_by_xpath(CHECKIN_BUTTON_XPATH)
        buttonCheckIn.click()
        time.sleep(0.5)
        # Click the email boarding pass button
        if emailBoardingPass:
            radioButtonEmail = browser.find_element_by_xpath(EMAIL_RADIO_BUTTON_XPATH)
            radioButtonEmail.click()
            time.sleep(0.1)
            buttonFinal = browser.find_element_by_xpath(FINAL_BUTTON_XPATH)
            buttonFinal.click()
            time.sleep(0.5)
        if not keepOpen:
            browser.quit()
        print('successful checkin!')
        report = messages.successfulCheckIn()
        status = 1
    except:
        if not keepOpen:
            browser.quit()
        report = messages.failedCheckIn()
        status = -1
    return [status, report]
Beispiel #3
0
 def test_we_can_launch_multiple_chrome_instances(self):
     driver1 = Chrome()
     driver2 = Chrome()
     driver3 = Chrome()
     driver1.quit()
     driver2.quit()
     driver3.quit()
def test_network_conditions_emulation():
    driver = Chrome()
    driver.set_network_conditions(
        offline=False,
        latency=56,  # additional latency (ms)
        throughput=789)
    conditions = driver.get_network_conditions()
    assert conditions['offline'] is False
    assert conditions['latency'] == 56
    assert conditions['download_throughput'] == 789
    assert conditions['upload_throughput'] == 789
Beispiel #5
0
def selenium_driver():
    if os.environ.get('SAUCE_USERNAME'):
        driver = make_sauce_driver()
    elif os.environ.get('JUPYTER_TEST_BROWSER') == 'chrome':
        driver = Chrome()
    else:
        driver = Firefox()

    yield driver

    # Teardown
    driver.quit()
Beispiel #6
0
def get_cookie(username, password, proxy):
    """
    Launch a chrome to get cookies
    """
    chromeopts = ChromeOptions()
    if proxy:
        chromeopts.add_argument('--proxy-server=%s' % proxy)

    web = Chrome(chrome_options=chromeopts)
    try:
        return signin(web, username, password)
    finally:
        web.quit()
Beispiel #7
0
 def setUp(self):
     """ Start a new browser instance for each test """
     self._screenshot_number = 1
     self.browser = os.getenv('SELENIUM_BROWSER',
                              settings.SELENIUM_DEFAULT_BROWSER)
     if os.getenv('SELENIUM_HOST'):
         self.sel = self.sauce_labs_driver()
     elif self.browser == 'firefox':
         self.sel = Firefox()
     elif self.browser == 'htmlunit':
         self.sel = RemoteWebDriver(desired_capabilities=DesiredCapabilities.HTMLUNITWITHJS)
     elif self.browser in ['ios', 'ipad', 'ipod', 'iphone']:
         capabilities = {
             'app': 'safari',
             'browserName': '',
             'device': 'iPhone Simulator',
             'os': 'iOS 6.1'
         }
         self.sel = RemoteWebDriver(command_executor=self.appium_command_executor(),
                                    desired_capabilities=capabilities)
     elif self.browser == 'opera':
         self.sel = RemoteWebDriver(desired_capabilities=DesiredCapabilities.OPERA)
     elif self.browser == 'iexplore':
         self.sel = RemoteWebDriver(desired_capabilities=DesiredCapabilities.INTERNETEXPLORER)
     elif self.browser == 'phantomjs':
         self.sel = PhantomJS(service_args=['--debug=true',
                                            '--webdriver-loglevel=DEBUG'])
     elif self.browser == 'safari':
         # requires a Safari extension to be built from source and installed
         self.sel = RemoteWebDriver(desired_capabilities=DesiredCapabilities.SAFARI)
     else:
         self.sel = Chrome()
     # Give the browser a little time; Firefox throws random errors if you
     # hit it too soon
     time.sleep(1)
Beispiel #8
0
class AltomTest(unittest.TestCase):
    driver = None
    home_page = None

    def setUp(self, browser):
        self.browser = browser

        if "firefox" in self.browser:
            profile = FirefoxProfile()
            # profile.set_preference("plugin.state.silverlight", 2)
            # profile.set_preference("browser.download.folderList", 1)
            # profile.set_preference("pdfjs.disabled", False);
            # profile.set_preference("pdfjs.firstRun", True);
            self.driver = Firefox(profile)  # get a new firefox session

        if "chrome" in self.browser:
            chromedriver = "/usr/local/bin/chromedriver"
            options = ChromeOptions()
            options.add_experimental_option('excludeSwitches', ['disable-component-update'])
            options.add_argument("--user-data-dir=./browser_resources/chrome_data_dir/")
            os.environ["webdriver.chrome.driver"] = chromedriver
            self.driver = Chrome(executable_path=chromedriver, chrome_options=options)

        self.home_page = home.Home(self.driver)

    def tearDown(self):
        self.driver.quit()

    def screenshot(self, name='.'):
        if name == '.':
            name = self.browser
        now = datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
        name = '%s-%s.png' % (name, now)
        output_path = "../test_results/screenshots/"
        if not os.path.exists(output_path):
            os.makedirs(output_path)
        retries = 5
        for r in xrange(retries):
            try:
                self.driver.get_screenshot_as_file(output_path + name)
                break
            except Exception as e:
                print "retry to take screenshot: %d out of %d" % (r + 1, retries)
                print e.message
                if r == retries - 1:
                    print "ERROR: failed to take screenshot"
        print "screenshot saved with file name: %s" %name
        return name
Beispiel #9
0
    def __init__(self):
        self.driver = Chrome('/usr/local/bin/chromedriver')
        self._max_window()
        self.driver.implicitly_wait(10)

        self.homepage = Homepage(self.driver)
        self.profile_page = ProfilePage(self.driver)
Beispiel #10
0
 def setUp(self):
     """ Start a new browser instance for each test """
     self._screenshot_number = 1
     self.browser = os.getenv("SELENIUM_BROWSER", settings.SELENIUM_DEFAULT_BROWSER)
     command_executor = os.getenv("SELENIUM_COMMAND_EXECUTOR", "")
     executor_was_set_explicitly = command_executor != ""
     command_executor = command_executor or "http://127.0.0.1:4444/wd/hub"
     if os.getenv("SELENIUM_HOST"):
         self.sel = self.sauce_labs_driver()
     elif executor_was_set_explicitly and self.browser in ("chrome", "firefox"):
         if self.browser == "chrome":
             caps = DesiredCapabilities.CHROME
             browser_profile = None
         else:
             caps = DesiredCapabilities.FIREFOX
             browser_profile = self.get_firefox_profile()
         self.sel = RemoteWebDriver(
             command_executor=command_executor, desired_capabilities=caps, browser_profile=browser_profile
         )
     elif self.browser == "firefox":
         self.sel = Firefox(self.get_firefox_profile())
     elif self.browser == "htmlunit":
         self.sel = RemoteWebDriver(
             command_executor=command_executor, desired_capabilities=DesiredCapabilities.HTMLUNITWITHJS
         )
     elif self.browser in ["ios", "ipad", "ipod", "iphone"]:
         capabilities = {"app": "safari", "browserName": "", "device": "iPhone Simulator", "os": "iOS 6.1"}
         self.sel = RemoteWebDriver(
             command_executor=self.appium_command_executor(), desired_capabilities=capabilities
         )
     elif self.browser == "opera":
         self.sel = RemoteWebDriver(
             command_executor=command_executor, desired_capabilities=DesiredCapabilities.OPERA
         )
     elif self.browser == "iexplore":
         self.sel = RemoteWebDriver(
             command_executor=command_executor, desired_capabilities=DesiredCapabilities.INTERNETEXPLORER
         )
     elif self.browser == "phantomjs":
         self.sel = PhantomJS(service_args=["--debug=true", "--webdriver-loglevel=DEBUG"])
     elif self.browser == "safari":
         # requires a Safari extension to be built from source and installed
         self.sel = RemoteWebDriver(
             command_executor=command_executor, desired_capabilities=DesiredCapabilities.SAFARI
         )
     else:
         self.sel = Chrome()
     self.sel.set_page_load_timeout(settings.SELENIUM_PAGE_LOAD_TIMEOUT)
     # Give the browser a little time; Firefox throws random errors if you
     # hit it too soon
     time.sleep(1)
Beispiel #11
0
    def run_test(self,browser_name):
        """

        """
#        print "Browser  name = " + TestSuite().get_browser_name()
        if settings.global_browser is not None:
            browser_name = settings.global_browser

        print "BROWSER NAME = " + browser_name
        if browser_name == "firefox":
            self.browser = Firefox()
        elif browser_name == "ie":
            self.browser = Ie()
        elif browser_name == "opera":
            self.browser = Opera()
        elif browser_name == "chrome":
            self.browser = Chrome()

        self.logger = logger.Logger(self.get_log_path())
        self.logger.log_name = self.get_log_name()
        self.logger.log("====================\r\n")
        self.logger.log(self.get_log_name()+"\r\n")
        self.logger.log("====================\r\n")
#        IF true => test succeeded, else => test failed
        status = True
#        while not self.test_is_running:
        try:
            self.test_is_running = True
#            Method is overridden in child object
            self.run(self.browser,self.logger)
            self.logger.log("\r\n<<<< SUCCESS >>>>\r\n")
            self.browser.quit()
        except TestFailedException as e:
            status = False
            self.browser.get_screenshot_as_file(self.get_screen_path())
            self.logger.log("\r\n ERROR: " + e.value + "\r\n Stacktrace: "
                            + traceback.format_exc() + "<<<< TEST FAILED >>>>\r\n")
            try:
                self.browser.quit()
            except NoSuchWindowException as e:
                print "ERROR: Cannot close window after Test Failed: " + e.message
                self.logger.log("ERROR: Cannot close window after Test Failed: " + e.message)
        finally:
            self.test_is_running = False
            self.logger.dump_to_filesystem()
            return {self.logger.log_name:[self.logger.get_logs(),status]}
Beispiel #12
0
def open_cds(cfg_path: str ='', pass_path: str='') -> WebDriver:
    config_path = cfg_path if cfg_path else 'config.json'
    with open(config_path) as f:
        config = json.load(f)

    password_path = pass_path if pass_path else '.pass'
    with open(password_path) as f:
        credential = json.load(f)

    chrome_option = webdriver.ChromeOptions()
    chrome_option.add_experimental_option("prefs",
                                          {"download.default_directory": os.path.join(os.getcwd(), 'template')})
    if 'driver_executable_path' in config and os.path.exists(config['driver_executable_path']):
        browser_driver = Chrome(executable_path=config['driver_executable_path'], chrome_options=chrome_option)
    else:
        browser_driver = Chrome(chrome_options=chrome_option)

    browser_driver.get(config['url_link_cds_eit100'])
    input_email = browser_driver.find_element_by_css_selector('input[name= "USER"]')
    input_email.send_keys(credential['user_name'])

    input_password = browser_driver.find_element_by_css_selector('input[name = "PASSWORD"]')
    input_password.send_keys(decrypt(credential['password'], str(uuid.getnode())))

    btn_login = browser_driver.find_element_by_css_selector('input[value = "Log on"]')
    btn_login.click()
    return browser_driver
Beispiel #13
0
    def setUp(self, browser):
        self.browser = browser

        if "firefox" in self.browser:
            profile = FirefoxProfile()
            # profile.set_preference("plugin.state.silverlight", 2)
            # profile.set_preference("browser.download.folderList", 1)
            # profile.set_preference("pdfjs.disabled", False);
            # profile.set_preference("pdfjs.firstRun", True);
            self.driver = Firefox(profile)  # get a new firefox session

        if "chrome" in self.browser:
            chromedriver = "/usr/local/bin/chromedriver"
            options = ChromeOptions()
            options.add_experimental_option('excludeSwitches', ['disable-component-update'])
            options.add_argument("--user-data-dir=./browser_resources/chrome_data_dir/")
            os.environ["webdriver.chrome.driver"] = chromedriver
            self.driver = Chrome(executable_path=chromedriver, chrome_options=options)

        self.home_page = home.Home(self.driver)
Beispiel #14
0
def browser_work(arg):
    # 打开浏览器
    browser = Chrome()

    # 访问用户登录url
    browser.get(const.USER_LOGIN_URL)

    # 等待网页加载
    time.sleep(2)

    while 1:
        if browser.current_url.split('#')[0] == const.USER_LOGIN_URL:
            try:
                user_login(browser)
            except Exception, e:
                pass
        elif browser.current_url == const.LOGIN_SUCCESS_URL:
            if arg:
                try:
                    user_logout(browser)
                except Exception, e:
                    pass
Beispiel #15
0
def extract_citation_for_publication(link):
    """
    this function craws the list of articles from a given link. If it has next page, it will continue to it until there is none
    @param[in]      profile_url     the link of google scholar profile you want to crawl
    @return         the list of articles as a list where each entry is dictionary
    """
    browser=Browser('chromedriver.exe')
    citation={}
    # go the citation view
    # as the page is written is javascript, we are not able to get its content via urllib2
    # intead we will use Selenium to simulate a web browser to render the page
    # req=urllib2.Request(publication[k]['link'], headers={'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0'})
    # p=urllib2.urlopen(req)
    # sub_soup=BeautifulSoup(p.readlines()[0], 'html.parser')
    # s=sub_soup.find(id='gs_ccl')
    browser.get(link)
    while True:
        citation_root=browser.find_element_by_id('gs_ccl')
        citation_list=citation_root.find_elements_by_class_name('gs_r')
        for citation_item in citation_list:
            # title
            title=citation_item.find_element_by_class_name('gs_rt').text
            # try to get the downloading link, if there is one
            try:
                link=citation_item.find_element_by_id('gs_ggsW2')
                link=link.find_element_by_link_text(link.text).get_attribute('href')
            except:
                link=None
            # author
            author_line=citation_item.find_element_by_class_name('gs_a')
            author_name=author_line.text.split(', ')
            author={}
            # for each of the author, find its link if its exits
            for a in author_name:
                try:
                    print '.',
                    # there is a google scholar profile with author
                    item=author_line.find_element_by_link_text(a)
                    author[a]=item.get_attribute('href')
                except:
                    # there is not such profile
                    author[a]=None
            # we can also press the cite button to get the detailed citation information, skipped here
            citation[title]={'link':link, 'author': author}
        # go to next page, if there is one
        if not next_page(browser):
            break
    # close
    browser.close()
    return citation
Beispiel #16
0
def extract_publication(profile_url, verbose=verbose_citation_list):
    """
    this function crawl the publication list from the google scholar profile
    @param[in]      profile_url     the link of google scholar profile you want to crawl
    @param[in]      verbose         the level of information you want to scrawl. By default, we will scraw the detailed citation list for each of your publicaiton
    @return         the list of pulication as a list, where each entry is a dictionary
    """
    # scholar's artical list
    browser=Browser()
    browser.get(profile_url)
    publication={}
    while True:
        publication_list=browser.find_elements_by_class_name('gsc_a_tr')
        for publication_item in publication_list:
            title=publication_item.find_element_by_class_name('gsc_a_at').text
            print title
            author=publication_item.find_elements_by_class_name('gs_gray')[0].text.split(', ')
            vendor=publication_item.find_elements_by_class_name('gs_gray')[1].text
            try:
                citation=int(publication_item.find_element_by_class_name('gsc_a_ac').text)
                link=publication_item.find_element_by_class_name('gsc_a_ac').get_attribute('href')
            except:
                citation=0
                link=None
            try:
                year=int(publication_item.find_element_by_class_name('gsc_a_h').text)
            except:
                year=None
            """
            # to get citation for every paper, but will be detected as robot
            if citation>0 and verbose>=verbose_citation_list:
                print 'and its citation list',
                # to solve anti-crawl, but not work
                # time.sleep(2)
                cited_by=extract_citation_for_publication(link)
            else:
                cited_by=None

            print 'finished'
            publication[title]={'link':link,'author':author,'vendor':vendor,'citation':citation, 'cited by': cited_by, 'year':year}
            """
            publication[title]={'link':link,'author':author,'vendor':vendor,'citation':citation, 'cited by': citation, 'year':year}
        if not next_page_new(browser):
            break
    browser.close()
    return publication
Beispiel #17
0
def extract_movies(max_page_num=5):
    browser = Browser()
    browser.get(URL)
    movies = {}
    while True:
        movie_list = browser.find_elements_by_class_name("item")
        for movie in movie_list:
            title = movie.find_element_by_tag_name("p").text.strip()
            rating = movie.find_element_by_tag_name("strong").text.strip()
            movies[title] = rating
        if max_page_num > 0:
            max_page_num -= 1
            if not have_more(browser):
                break
        else:
            break
    browser.close()
    return movies
def weibo_login():
    """
    show login page and ask user to enter psd and usr to login
    :return: utils
    """
    driver = Chrome(executable_path=CHROME_DRIVER_PATH)
    driver.get("http://weibo.com")
    try:
        WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CLASS_NAME, "W_nologin_logo"))
        )
    except Exception as e:
        print e
    else:
        print u"请在登陆页面上进行登陆操作, 之后再文件夹下寻找cookies文件"
        retcode = 1 if raw_input(u"登陆成功?(Y/N)") == 'Y' else 0
        return retcode, driver.get_cookies()
    finally:
        driver.quit()
Beispiel #19
0
def scrap_nasdaq():

    try:
        import selenium
    except ImportError:
        log.error('\nThere is no such module installed')
        import sys
        sys.exit(-1)

    from selenium.webdriver import Chrome
    dr = Chrome()
    dr.get("http://eoddata.com/stocklist/NASDAQ.htm")

    e = [i.text for i in [i for i in dr.find_elements_by_xpath('//*[@id="ctl00_cph1_divLetters"]/table/tbody/tr/td')]]

    abec = {}
    for znm in e:
        dr.get("http://eoddata.com/stocklist/NASDAQ/{}.html".format(znm))
        abec[znm] = [symb.text for symb in dr.find_elements_by_xpath('//*[@id="ctl00_cph1_divSymbols"]/table/tbody/tr/td[1]/a')]

    for key, val in abec.items():
        with open("nasdaq.txt", "a") as ofile:
            for rec in val:
                ofile.write(rec + "\n")
Beispiel #20
0
def extract_hongren(max_page_num=5):
    suffix = "hongren"
    # 正常情况下,把driver文件所在路径加到Path环境变量里就可以了
    # 但是我这里不知道怎么回事就是不行,干脆放在代码所在目录下面了
    browser = Browser('chromedriver.exe')
    browser.get(BASE_URL + suffix)
    items = {}
    while True:
        item_list = browser.find_elements_by_class_name('wall_item')
        for item in item_list:
            href = item.find_element(By.CSS_SELECTOR, ".pic_box.pic").get_attribute("href")
            desc = item.find_elements_by_class_name("desc")[0].text.strip()
            items[href] = desc
        if max_page_num > 0:
            max_page_num -= 1
            if not scroll_to_next(browser):
                break
        else:
            break
    browser.close()
    return items
Beispiel #21
0
class TestCase(TestSuite):
    """
    pydoc

    """
    __log_name = ""
    __log_path = ""
    __screen_path = ""

    #noinspection PyMissingConstructor
    def __init__(self):
        self.browser = None
        self.wait = None
        self.logger = None
        self.test_is_running = False

    #noinspection PyArgumentList
    def run_test(self,browser_name):
        """

        """
#        print "Browser  name = " + TestSuite().get_browser_name()
        if settings.global_browser is not None:
            browser_name = settings.global_browser

        print "BROWSER NAME = " + browser_name
        if browser_name == "firefox":
            self.browser = Firefox()
        elif browser_name == "ie":
            self.browser = Ie()
        elif browser_name == "opera":
            self.browser = Opera()
        elif browser_name == "chrome":
            self.browser = Chrome()

        self.logger = logger.Logger(self.get_log_path())
        self.logger.log_name = self.get_log_name()
        self.logger.log("====================\r\n")
        self.logger.log(self.get_log_name()+"\r\n")
        self.logger.log("====================\r\n")
#        IF true => test succeeded, else => test failed
        status = True
#        while not self.test_is_running:
        try:
            self.test_is_running = True
#            Method is overridden in child object
            self.run(self.browser,self.logger)
            self.logger.log("\r\n<<<< SUCCESS >>>>\r\n")
            self.browser.quit()
        except TestFailedException as e:
            status = False
            self.browser.get_screenshot_as_file(self.get_screen_path())
            self.logger.log("\r\n ERROR: " + e.value + "\r\n Stacktrace: "
                            + traceback.format_exc() + "<<<< TEST FAILED >>>>\r\n")
            try:
                self.browser.quit()
            except NoSuchWindowException as e:
                print "ERROR: Cannot close window after Test Failed: " + e.message
                self.logger.log("ERROR: Cannot close window after Test Failed: " + e.message)
        finally:
            self.test_is_running = False
            self.logger.dump_to_filesystem()
            return {self.logger.log_name:[self.logger.get_logs(),status]}

    def run(self):
         pass

    def get_browser(self):
        pass
#   dump test case results to file system
#    return TestCase log

    def get_log_name(self):
        return self.__log_name

    def get_log_path(self):
        return self.__log_path

    def get_screen_path(self):
        return self.__screen_path

    def set_log_name(self,name):
        self.__log_path = settings.get_topface_reports_path() + name + ".log"
        self.__log_name = name
        self.__screen_path = settings.get_topface_reports_path() + name + ".png"

    def do_method(self,method,element_type=None,*args):
        dao = DataAccessObject()
        t0 = time.time()
        self.logger.log("TIME0 = " + str(t0))
        method(*args)
        result_time = time.time() - t0
        self.logger.log("EXECUTION TIME = " + str(result_time) + " seconds")
        try:
            if element_type == profiling_events.login_event:
                self.logger.log("INSERT INTO LOGIN_TIMELINE_TABLE")
                dao.insert_into_login_timeline_table(result_time)

            elif element_type == profiling_events.message_sent_event:
                self.logger.log("INSERT INTO PROFILE_EVENTS_TABLE")
                dao.insert_into_send_message_timeline_table(result_time)

            elif element_type == profiling_events.questionary_edited_event:
                self.logger.log("INSERT INTO QUESTIONARY_TIMELINE_TABLE")
                dao.insert_into_questionary_timeline_table(result_time)

            elif element_type == profiling_events.user_marked_event:
                self.logger.log("INSERT INTO MARKS_TIMELINE_TABLE")
                dao.insert_into_mark_user_timeline_table(result_time)

            elif element_type == profiling_events.user_navigated_event:
                self.logger.log("INSERT INTO NAVIGATION_TIMELINE_TABLE")
                dao.insert_into_user_navigation_timeline_table(result_time)

        except TestFailedException as e:
            raise TestFailedException("Failed to put in log time metrics " + e.message)
    raise

started_at = datetime.now()

print("now it is %s" % started_at)
print("newest ver = %d" % CDDA_version_max)

CDDA_version = CDDA_version_first
# keep fetching until we get to CDDA_version_max. TODO: before ending, check again (if we had very long fetching)
if CDDA_version == CDDA_version_max + 1:
    input('No new CDDA versions to make hmtl out off!')
    exit()

pull_url = 'https://github.com/CleverRaven/Cataclysm-DDA/pull/{}'
commit_url = 'https://github.com/CleverRaven/Cataclysm-DDA/commit/{}'
driver = Chrome(r'C:\Program Files\chromedriver.exe'
                )  # if that throws error, fix this line

while CDDA_version <= CDDA_version_max:
    url = "http://gorgon.narc.ro:8080/job/Cataclysm-Matrix/{}/".format(
        CDDA_version)

    req = Request(url)
    try:
        webpage_read = urlopen(req).read().decode("utf-8")
    except:  # except HTTPError throws NameError
        if CDDA_version <= CDDA_version_max:
            print("\t%d doesn't exist" % CDDA_version)
            CDDA_version += 1
            continue
        break
class AutomatorMixin(object):
    class UnexpectedSituation(Exception):
        pass

    data_property_class = None

    def __init__(self, steps, data_args=[]):
        self.steps = steps
        self.data = self.data_property_class(*data_args)

    def run(self):
        options = ChromeOptions()
        options.add_argument('--test-type')
        self.driver = Chrome(chrome_options=options)
        self.perform_steps()
        self.driver.close()

    def find_element(self, selector):
        LOG.info('finding selector "%s"' % selector)
        return self.driver.find_element_by_css_selector(selector)

    @property
    def action_method_lookup(self):
        return self.get_action_method__lookup()

    def get_action_method__lookup(self):
        return {
            'click': self.perform_click,
            'fill_form': self.perform_fill_form,
            'select_drop_down': self.perform_select_drop_down,
        }

    def get_css_selector(self, action):
        return action.get('css_selector')

    def get_action_value(self, action):
        if 'value' in action:
            value = action['value']
        elif 'property' in action:
            property_name = action['property']
            value = getattr(self.data, property_name)
        else:
            raise AutomatorMixin.UnexpectedSituation('Cannot find key "property" or "value"')

        return value

    def perform_steps(self):
        for step in self.steps:
            if 'url' in step:
                self.driver.get(step['url'])
            if 'actions' in step:
                self.perform_actions(step['actions'])

    def perform_actions(self, actions):
        for action in actions:
            action_method = self.action_method_lookup[action['type']]
            action_method(action)

    def perform_click(self, action):
        selector = self.get_css_selector(action)
        if selector:
            self.find_element(selector).click()
            return

        # Find by id.  This will be needed when people use "." in their id names.  Such as kfc's survey
        css_id = action['id_selector']
        LOG.info(css_id)
        self.driver.find_element_by_id(css_id).click()

    def perform_fill_form(self, action):
        selector = self.get_css_selector(action)
        value = self.get_action_value(action)

        self.find_element(selector).send_keys(value)

    def perform_select_drop_down(self, action):
        selector = self.get_css_selector(action)
        value = self.get_action_value(action)

        Select(self.find_element(selector)).select_by_value(value)
Beispiel #24
0
def get_browser(headless: bool = True, browser_class: int = 1) -> Firefox:
    """
    获取一个浏览器
    :param headless:
    :param browser_class: 浏览器种类,0是谷歌, 1 是火狐, 服务器端不能使用谷歌
    :return:
    """
    """
    selenium安装方法: pip3 install selenium
    firefox的headless浏览器
    因为headless的浏览器的语言跟随操作系统,为了保证爬回来的数据是正确的语言,
    这里必须设置浏览器的初始化参数,
    注意,使用headless必须先安装对应浏览器正常的版本,然后再安装headless版本
    比如火狐的headless
    下载火狐的geckodriver驱动。(当前文件夹下已经有一个了)地址是:
    https://github.com/mozilla/geckodriver/releases
    下载后解压是一个geckodriver 文件。拷贝到/usr/local/bin目录下,然后加上可执行的权限
    sudo chmod +x /usr/local/bin/geckodriver
    chrome的headless浏览器
    https://chromedriver.storage.googleapis.com/index.html?path=2.35/
    你也可以自行搜索chromedriver的下载地址,解压是个可执行文件,放到chrome的目录即可.
    一般ubuntu下面,chrome的目录是/opt/google/chrome/
    据说使用root权限运行的话,chrome的headless浏览器会报异常.而firefox的headless浏览器不会!
    """
    if browser_class == 1:
        profile = FirefoxProfile()
        profile.set_preference("intl.accept_languages", "zh-cn")
        options = FirefoxOptions()
        options.add_argument("--headless")
        if headless:
            try:
                browser = Firefox(firefox_profile=profile, executable_path=firefox_driver, firefox_options=options)
            except Exception as e:
                title = "{} Firefox headless浏览器打开失败".format(datetime.datetime.now())
                content = "错误原因是:{}".format(e)
                send_mail(title=title, content=content)
                logger.exception(e)
                raise e
        else:
            try:
                browser = Firefox(firefox_profile=profile, executable_path=firefox_driver,)
            except Exception as e:
                title = "{} Firefox headless浏览器打开失败".format(datetime.datetime.now())
                content = "错误原因是:{}".format(e)
                send_mail(title=title, content=content)
                logger.exception(e)
                raise e
    else:
        options = ChromeOptions()
        options.add_experimental_option("excludeSwitches", ["ignore-certificate-errors"])
        if headless:
            options.add_argument("--headless")
            try:
                browser = Chrome(executable_path=chrome_driver, chrome_options=options)
            except Exception as e:
                title = "{} Chrome headless浏览器打开失败".format(datetime.datetime.now())
                content = "错误原因是:{}".format(e)
                send_mail(title=title, content=content)
                logger.exception(e)
                raise e
        else:
            try:
                browser = Chrome(executable_path=chrome_driver, chrome_options=options)
            except Exception as e:
                title = "{} Chrome headless浏览器打开失败".format(datetime.datetime.now())
                content = "错误原因是:{}".format(e)
                send_mail(title=title, content=content)  # 这是我自定义的方法
                logger.exception(e)
                raise e
    return browser
Beispiel #25
0
class CodeForces:
    def __init__(self):
        self.opts = Options()
        self.opts.set_headless()
        self.browser = Chrome(options=self.opts)

    def close(self):
        self.browser.close()

    def getTopRated(self):
        try:
            self.browser.get('https://www.codeforces.com')
            section = self.browser.find_elements_by_tag_name('table')
            newsec = section[0].text
            newsec = newsec[14:]
            newsec = newsec.split('\n')
            l = []
            for i in range(len(newsec)):
                n = newsec[i].split(' ')
                l.append(n)
            with open('top_rated.csv', 'w') as fil:
                f = csv.writer(fil)
                f.writerow(['RANK', 'USERNAME', 'RATING'])
                for i in range(len(l)):
                    f.writerow(l[i])
            print('Successfully created/updated "top_rated.csv"')
        except Exception as e:
            print('Error occured')
            print(e)

    def getTodaysProblems(self):
        try:
            self.browser.get('https://www.codeforces.com/problemset')
            section = self.browser.find_elements_by_class_name('problems')
            newsec = section[0].text
            newsec = newsec[9:]
            newsec = newsec.split('\n')
            l = []
            n = []
            ids = []
            newl = [None for i in range(2 * len(l))]
            final = [None for i in range(len(l))]
            d = []
            for i in range(len(newsec)):
                if (i % 4) == 1:
                    n.append(newsec[i])
            for i in range(len(newsec)):
                if (i % 4) == 0:
                    ids.append(newsec[i])
            for i in range(len(newsec)):
                if (i % 4) == 3:
                    l.append(newsec[i])
            for i in range(len(l)):
                newl.append(l[i].split(' '))
            for i in range(len(newl)):
                if newl[i][0] == '':
                    d.append('None')
                    continue
                val = int(newl[i][0])
                if val > 0 and val <= 1700:
                    d.append('Easy')
                elif val > 1700 and val <= 2600:
                    d.append('Medium')
                else:
                    d.append('Hard')
            with open('todays_problem_set.csv', 'w') as fil:
                f = csv.writer(fil)
                f.writerow(['ID', 'PROBLEM', 'LEVEL', 'DIFFICULTY'])
                for i in range(len(n)):
                    f.writerow([ids[i], n[i], newl[i][0], d[i]])
            print('Successfully created/updated "todays_problem_set.csv"')
            print('Note: Problem sets change from time to time')
        except Exception as e:
            print('Error occured')
            print(e)

    def getLatestContest(self):
        try:
            self.browser.get('https://codeforces.com/contests')
            section = self.browser.find_element_by_class_name('sidebox')
            newsec = section.text.split('\n')
            name = newsec[2]
            section2 = self.browser.find_elements_by_class_name('dark')
            d = section2[2].text
            d = d[:len(d) - 7]
            l = section2[3].text
            with open('upcoming_contest.txt', 'w') as fil:
                fil.write('UPCOMING CONTEST:\n\n')
                fil.write('Name of the contest: ' + name + '\n')
                fil.write('Begin date: ' + d + ' UTC+5.5\n')
                fil.write('Duration: ' + l + 'hrs\n')
            print('Successfully created/updated "upcoming_contest.txt"')
        except Exception as e:
            print('Error occured')
            print(e)
        # row.find_elements_by_tag_name('td')
        if cells[3].text == "Errors" or cells[3].text == "Completed":
            downloadldss = row.find_element_by_css_selector("td.context-menu-ldss")
            downloadldss.click()
        else:
            time.sleep(10)
            i = i - 1
            print("Will wait 10x" + i + "second(s)")
            if i < 1:
                break

    print("you can check the validation result now!")


if __name__ == "__main__":
    browser = Chrome()
    tran_name = "Test for CDS48 - 100 users contacts - 16"

    with open(".pass") as f:
        credential = json.load(f)

    browser.get("https://eit1-i.svcs.hp.com/cds/")

    email = browser.find_element_by_css_selector('input[name= "USER"]')
    email.send_keys(credential["user_name"])

    password = browser.find_element_by_css_selector('input[name = "PASSWORD"]')
    password.send_keys(credential["password"])

    Login = browser.find_element_by_css_selector('input[value = "Log on"]')
    Login.click()
Beispiel #27
0
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
import sys												#								----copied above part-----------			
import time
from selenium.webdriver import Chrome
from selenium.webdriver.firefox.options import Options
opts = Options()
#opts.set_headless()
#assert opts.headless  # Operating in headless mode ----> remove this line if assertion error is thrown
browser = Chrome()
browser.get('https://quora.com')



#login part
email = browser.find_element_by_xpath('/html/body/div[3]/div/div[2]/div[2]/div[1]/div/div[2]/div/div/div/form/div[2]/div[1]/input')
email.clear()
email.send_keys('*****@*****.**')
password = browser.find_element_by_xpath('/html/body/div[3]/div/div[2]/div[2]/div[1]/div/div[2]/div/div/div/form/div[2]/div[2]/input')
password.clear()
password.send_keys('2Aug@Sd0')
time.sleep(1)
login = browser.find_element_by_xpath('/html/body/div[3]/div/div[2]/div[2]/div[1]/div/div[2]/div/div/div/form/div[2]/div[3]/input')
login.click()
time.sleep(3)


#asking question
Beispiel #28
0
def init_driver():
    username = '******'
    # 测试环境平台端
    url = r'https://cs1.jsbooks.com.cn/customer/#/customer/user/login'
    password = "******"

    #云环境
    # url = r'http://www.jssz365.com/user/login'
    # password = '******'

    driver = Chrome()
    driver.implicitly_wait(10)
    driver.get(url=url)
    driver.maximize_window()
    driver.find_element_by_id('userName').send_keys(username)
    driver.find_element_by_id('password').send_keys(password)
    driver.find_element_by_id('verifyCode').send_keys('1234')
    driver.find_element_by_class_name('ant-btn').click()
    time.sleep(1)
    driver.find_element_by_class_name('ant-btn').click()
    # driver.execute_script()
    # driver.find_element_by_xpath().__setattr__()
    # driver.find_element_by_css_selector()
    time.sleep(1)
    yield driver
    driver.quit()
Beispiel #29
0
def reset_route(driver: webdriver.Chrome):
    driver.find_element_by_css_selector(
        """body > div.metro-body > div > div.metro-app__sidebar-container > div.metro-sidebar-view > div > div > div.scroll__content > div.metro-input-form > div.metro-input-form__buttons > div"""
    ).click()
    time.sleep(0.1)
Beispiel #30
0
def get_travel_time(driver: webdriver.Chrome):
    return driver.execute_script("""
        return Number(document.getElementsByClassName("route-masstransit-step-view__details-info-left-content")[0].textContent.split(" ")[0]);
    """)
Beispiel #31
0
def get_travel_interval(driver: webdriver.Chrome):
    return driver.execute_script("""
        return Number(document.getElementsByClassName("route-metro-details-step-view__metro-minutes")[0].textContent.split(" ")[0]);
    """)
Beispiel #32
0
def get_line(driver: webdriver.Chrome):
    bg_color = driver.execute_script("""
        return document.getElementsByClassName("metro-input-form__stop-icon")[0].style.backgroundColor;
    """)

    return LINE_COLORS.index(bg_color) + 1
Beispiel #33
0
def main():
    # Set up logging
    logging.basicConfig(filename='grade-checker.log',
                        format='%(asctime)s - %(levelname)s ==> %(message)s',
                        level=logging.INFO)
    logging.info("Grade Checker started")

    # setup
    primuss_username, primuss_password = init()

    # Start browser
    chrome_options = Options()
    chrome_options.add_argument("--headless")
    browser = Chrome(options=chrome_options)
    browser.implicitly_wait(10)
    browser.get('https://www3.primuss.de/cgi-bin/login/index.pl?FH=fhin')
    logging.info("Browser created")

    try:
        # Login in
        username = browser.find_element_by_id("username")
        username.click()
        username.clear()
        username.send_keys(primuss_username)
        password = browser.find_element_by_id("password")
        username.click()
        password.clear()
        password.send_keys(primuss_password)
        button = browser.find_element_by_xpath(
            '/html/body/div/div[5]/form/div[4]/button')
        button.click()
        logging.info("Successfully logged into primuss")

        # Get to grad announcement page
        open_menu = browser.find_element_by_xpath(
            '//*[@id="main"]/div[1]/div/div[1]/button')
        open_menu.click()
        my_exams = browser.find_element_by_xpath(
            '//*[@id="nav-prim"]/div/ul/li[4]/a')
        my_exams.click()
        my_grades = browser.find_element_by_xpath(
            '//*[@id="main"]/div[2]/div[1]/div[2]/form/input[6]')
        my_grades.click()

        # Get the current grades
        new_grades = browser.find_element_by_xpath(
            '//*[@id="content-body"]/table[2]/tbody[2]').get_attribute(
                'innerHTML')
        logging.info("Retrieved grades from primuss")

        # Parse grades from table
        results = parse(new_grades)

        # check for updates
        update = check(results)

        # If grades were updated, send email
        if update:
            logging.info("New grades are available")
            notify()
        else:
            logging.info("No new grades available")

    except Exception as e:
        logging.error("Exception while retrieving grades from primuss: " +
                      str(e))

    finally:
        browser.close()
        logging.info("Browser closed. Exiting grade Checker.\n\n")
Beispiel #34
0
 def __init__(self):
     self.driver = Chrome()
Beispiel #35
0
 def __init__(self):
     self.opts = Options()
     self.opts.set_headless()
     self.browser = Chrome(options=self.opts)
from selenium.webdriver import Chrome, ChromeOptions
import sys
import os
import csv
import urllib

if not os.path.isdir('../data/'):
    os.makedirs('../data/')

options = ChromeOptions()
options.add_argument('--headless')
driver = Chrome('../chromedriver', options=options)
driver.get('https://vdata.nikkei.com/economicdashboard/macro/')

# Get rid of 's'
str_list = [chr(i) for i in range(97, 97 + 18)]
str_list.remove('n')
str_list.remove('r')

content_list = driver.find_elements_by_class_name('content__section')
section_lists = [
    content.find_elements_by_class_name("a-section")
    for content in content_list
]
element_index_list = [
    list(range(1,
               len(section_list) + 1)) for section_list in section_lists
]

title_list = []
i = 0
Beispiel #37
0
def main():
    lines = read()
    USERNAME = lines[0]
    PASSWORD = lines[1]
    EVENT = lines[2]

    opts = Options()
    opts.add_argument('--no-sandbox')
    opts.add_argument('--disable-dev-shm-usage')
    opts.add_argument('--log-level=3')
    opts.add_argument('--headless')
    opts.add_argument('--disable-gpu')

    browser = Chrome(options=opts)
    browser.get(
        'http://info.vit.ac.in/gravitas18/gravitas/gravitas_coordinator_login.asp'
    )
    wait = WebDriverWait(browser, 100)

    src = browser.page_source

    myElem = wait.until(EC.visibility_of_element_located((By.ID, 'loginid')))

    loginfield = browser.find_element_by_id('loginid')
    loginfield.send_keys(USERNAME)

    pwfield = browser.find_element_by_id('logpassword')
    pwfield.send_keys(PASSWORD)

    soup = BeautifulSoup(src, 'html.parser')
    captcha = soup.find_all("input", type='hidden')

    captcha = str(captcha[0])
    captcha = captcha[-9:-3]
    #print(captcha)

    cfield = browser.find_element_by_id('captchacode')
    cfield.send_keys(captcha)

    loginbtn = browser.find_element_by_name('frmSubmit')
    loginbtn.click()

    #print("waiting for page load")
    #myElem = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'glyphicon glyphicon-menu-down')))
    browser.get(
        'http://info.vit.ac.in/gravitas18/gravitas/coord_event_participants.asp'
    )
    #http://info.vit.ac.in/gravitas18/gravitas/coord_event_participants.asp
    #http://info.vit.ac.in/gravitas18/gravitas/coord_event_participant_list.asp
    myElem = wait.until(EC.visibility_of_element_located((By.NAME, 'form1')))

    viewbtn = browser.find_element_by_name('form1')
    viewbtn.click()

    src = browser.page_source

    scrapeRegs(src, EVENT)
    browser.quit()
Beispiel #38
0
def report_day(browser: webdriver.Chrome, ShouJHM, ShiFSH, ShiFZX, ddlSheng,
               ddlShi, ddlXian, XiangXDZ, ShiFZJ, t: dt.datetime):
    print(f'正在补报{t.year}-{t.month}-{t.day}')
    browser.get(
        f'https://selfreport.shu.edu.cn/DayReport.aspx?day={t.year}-{t.month}-{t.day}'
    )
    time.sleep(1)

    print('承诺')
    browser.find_element(By.ID, 'p1_ChengNuo-inputEl-icon').click()

    checkboxes = browser.find_elements(
        By.CSS_SELECTOR, '#p1_pnlDangSZS .f-field-checkbox-icon')
    if len(checkboxes) > 0:  # 有的人没有答题
        print('答题')
        checkboxes[0].click()

    print('是否在上海', ShiFSH)
    # 在上海(校内),在上海(不在校内),不在上海
    checkboxes = browser.find_elements(By.CSS_SELECTOR,
                                       '#p1_ShiFSH .f-field-checkbox-icon')
    if ShiFSH == '在上海(不在校内)':
        checkboxes[1].click()
    elif ShiFSH == '不在上海':
        checkboxes[2].click()
    else:
        checkboxes[0].click()
    time.sleep(1)

    print('是否住校', ShiFZX)
    try:
        checkboxes = browser.find_elements(
            By.CSS_SELECTOR, '#p1_ShiFZX .f-field-checkbox-icon')
        checkboxes[0 if ShiFZX else 1].click()
    except Exception as e:
        print('是否住校提交失败')

    print('省市县详细地址', ddlSheng, ddlShi, ddlXian, XiangXDZ[:2])
    elem = browser.find_element(
        By.CSS_SELECTOR, "#p1_ddlSheng input[name='p1$ddlSheng$Value']")
    browser.execute_script(
        '''
        var elem = arguments[0];
        var value = arguments[1];
        elem.value = value;
    ''', elem, ddlSheng)

    elem = browser.find_element(By.CSS_SELECTOR,
                                "#p1_ddlShi input[name='p1$ddlShi$Value']")
    browser.execute_script(
        '''
        var elem = arguments[0];
        var value = arguments[1];
        elem.value = value;
    ''', elem, ddlShi)

    elem = browser.find_element(By.CSS_SELECTOR,
                                "#p1_ddlXian input[name='p1$ddlXian$Value']")
    browser.execute_script(
        '''
        var elem = arguments[0];
        var value = arguments[1];
        elem.value = value;
    ''', elem, ddlXian)

    elem = browser.find_element(By.CSS_SELECTOR,
                                "#p1_XiangXDZ #p1_XiangXDZ-inputEl")
    browser.execute_script(
        '''
        var elem = arguments[0];
        var value = arguments[1];
        elem.value = value;
    ''', elem, XiangXDZ)

    print('是否家庭地址', ShiFZJ)
    checkboxes = browser.find_elements(By.CSS_SELECTOR,
                                       '#p1_ShiFZJ .f-field-checkbox-icon')
    checkboxes[0 if ShiFZJ else 1].click()
    time.sleep(0.5)

    # 随申码
    try:
        SuiSM = browser.find_element(By.ID, 'p1_pImages_HFimgSuiSM-inputEl')
        if SuiSM.get_attribute('value') == '':
            print('未检测到已提交随申码')
            upload = browser.find_element(By.NAME, 'p1$pImages$fileSuiSM')
            upload.send_keys(draw_XingCM(ShouJHM, t))
            WebDriverWait(browser, 10).until(
                element_has_no_value((By.NAME, 'p1$pImages$fileSuiSM')))

            browser.find_element(By.CSS_SELECTOR,
                                 '#p1_pImages_fileSuiSM a.f-btn').click()
            WebDriverWait(browser, 10).until(
                element_has_value((By.ID, 'p1_pImages_HFimgSuiSM-inputEl')))

            print(SuiSM.get_attribute('value'))
        else:
            print(f'已提交随申码')
    except Exception as e:
        print(e)
        print('随申码提交失败')

    # 行程码
    try:
        XingCM = browser.find_element(By.ID, 'p1_pImages_HFimgXingCM-inputEl')
        if XingCM.get_attribute('value') == '':
            print('未检测到已提交行程码')
            upload = browser.find_element(By.NAME, 'p1$pImages$fileXingCM')
            upload.send_keys(draw_XingCM(ShouJHM, t))
            WebDriverWait(browser, 10).until(
                element_has_no_value((By.NAME, 'p1$pImages$fileXingCM')))

            browser.find_element(By.CSS_SELECTOR,
                                 '#p1_pImages_fileXingCM a').click()
            WebDriverWait(browser, 10).until(
                element_has_value((By.ID, 'p1_pImages_HFimgXingCM-inputEl')))

            print(XingCM.get_attribute('value'))
        else:
            print(f'已提交行程码')
    except Exception as e:
        print(e)
        print('行程码提交失败')

    # 确认提交
    browser.find_element(By.ID, 'p1_ctl02_btnSubmit').click()
    time.sleep(1)
    messagebox = browser.find_element(By.CLASS_NAME, 'f-messagebox')

    if '确定' in messagebox.text:
        for a in messagebox.find_elements(By.TAG_NAME, 'a'):
            if a.text == '确定':
                a.click()
                break

        messagebox = browser.find_element(By.CLASS_NAME, 'f-messagebox')
        if '提交成功' in messagebox.text:
            return True
        else:
            print(messagebox.text)
            return False
    else:
        print(messagebox.text)
        return False
Beispiel #39
0
# This will open a web browser, sign into venmo, and pay someone some money

from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys
import cPickle as pickle
import SendKeys
import time
import venmoInfo
import datetime
import os

CHROME_DRIVER_PATH = 'C:\ChromeDriver\chromedriver.exe'
VENMO_URL = 'https://venmo.com/'

browser = Chrome(CHROME_DRIVER_PATH)
browser.get(VENMO_URL)

if os.path.isfile('cookies.pkl'):
    # there is a cookie file

    cookies = pickle.load(open("cookies.pkl", "rb"))
    for cookie in cookies:
        browser.add_cookie(cookie)

    # click on the sign in link
    signin_link = browser.find_element_by_link_text("Sign in")
    signin_link.click()

    # enter the email and password and send it
    username_box = browser.find_element_by_class_name("email-username-phone")
    username_box.send_keys(venmoInfo.my_u)
    def set_chrome(self,**kwargs):
        """
        ----------------------------------------------------------------------------

        Configuration Method:
            1. EXECUTABLE,SERVICE ARGS and PORT
            2. DESIRED CAPABILITIES
            3. CHROME OPTIONS


        Command Line Switches:
            http://peter.sh/experiments/chromium-command-line-switches/

        Capabilities:
            https://sites.google.com/a/chromium.org/chromedriver/capabilities


        ----------------------------------------------------------------------------
        This function should be a class for webdriver.
        For now, just setting up Chrome.

        driver_browsers                     =   ['android',
                                                 'chrome',
                                                 'firefox',
                                                 'htmlunit',
                                                 'internet explorer',
                                                 'iPhone',
                                                 'iPad',
                                                 'opera',
                                                 'safari']

        """

        def set_defaults(self):
            default_settings                =   {'bin_path'                             :   '/usr/local/bin/chromedriver',
                                                 'port'                                 :   15010,
                                                 'log_path'                             :   os_environ['BD'] + '/html/logs/chromedriver.log',
                                                 'user-agent'                           :   "Mozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20100101 Firefox/13.0.1",
                                                 # 1 in 1788 per panopticlick !!
                                                 'no_java'                              :   True,
                                                 'no_plugins'                           :   True,
                                                 'net-log-capture-mode'                 :   'IncludeCookiesAndCredentials',
                                                 'log-level'                            :   0,
                                                 'cookie_content'                       :   {},
                                                 'capabilities'                         :
                                                     {  'acceptSslCerts'                :   True,
                                                        'databaseEnabled'               :   False,
                                                        'unexpectedAlertBehaviour'      :   "accept",
                                                        'applicationCacheEnabled'       :   False,
                                                        'webStorageEnabled'             :   False,
                                                        'browserConnectionEnabled'      :   False,
                                                        'locationContextEnabled'        :   True,
                                                        },
                                                 'loggingPrefs'                         :
                                                     {  "driver"                        :   "ALL",
                                                        "server"                        :   "ALL",
                                                        "browser"                       :   "ALL"},
                                                 'true_opts'                            :
                                                     [
                                                         'disable-core-animation-plugins',
                                                         'disable-plugins',
                                                         'disable-extensions',
                                                         'disable-plugins-discovery',
                                                         'disable-site-engagement-service',
                                                         'disable-text-input-focus-manager',

                                                         'enable-account-consistency',
                                                         'enable-devtools-experiments',
                                                         'enable-logging',
                                                         'enable-network-information',
                                                         'enable-net-benchmarking',
                                                         'enable-network-portal-notification',

                                                         'enable-strict-site-isolation',
                                                         'incognito',                           # if incognito, extensions must be disabled
                                                         'log-net-log',
                                                         'scripts-require-action',
                                                         'system-developer-mode',
                                                         # 'use-mobile-user-agent',
                                                     ],
                                                 'false_opts'                           :
                                                     [
                                                         'enable-profiling',
                                                         ],
                                                 }
            excluded                        =   [] if not (hasattr(self,'T') and hasattr(self.T,'excluded_defaults')) else self.T.excluded_defaults
            for k,v in default_settings.iteritems():
                if excluded.count(k):
                    if T.has_key(k):
                        del T[k]
                else:
                    T.update(                   {k                                      :   v})
            return T
        def set_desired_capabilities(self):
            from selenium.webdriver             import DesiredCapabilities
            dc                              =   DesiredCapabilities.CHROME.copy()
            platforms                       =   ['WINDOWS', 'XP', 'VISTA', 'MAC', 'LINUX', 'UNIX', 'ANDROID', 'ANY']

            # -PROXY OBJECT
            # from selenium.webdriver import Proxy

            # -READ-WRITE CAPABILITIES
            rw_capabilities                 =   [
                                                 'acceptSslCerts',              # boolean unless specified
                                                 'javascriptEnabled',
                                                 'databaseEnabled',
                                                 'proxy',                       # Proxy Object
                                                 'unexpectedAlertBehaviour',    # string {"accept", "dismiss", "ignore"}
                                                 'applicationCacheEnabled',
                                                 'webStorageEnabled',
                                                 'rotatable',
                                                 'browserConnectionEnabled',
                                                 'locationContextEnabled',
                                                 'elementScrollBehavior',       # int (align with the top (0) or bottom (1) of the viewport)
                                                 'nativeEvents'
                                                 ]

            assert T.has_key('capabilities')
            for it in rw_capabilities:
                if T['capabilities'].has_key(it):
                    dc[it]                  =   str(T['capabilities'][it])


            # -loggingPrefs                         OBJECT (dict)
            #   "OFF",  "SEVERE", "WARNING",
            #   "INFO", "CONFIG", "FINE",
            #   "FINER","FINEST", "ALL"

            if T.has_key('loggingPrefs'):
                dc[it]                      =   T['loggingPrefs']

            return dc
        def set_profile(self):
            profile                         =   {#"download.default_directory"       :   "C:\\SeleniumTests\\PDF",
                                                 "download.prompt_for_download"     :   False,
                                                 "download.directory_upgrade"       :   True,
                                                 "plugins.plugins_disabled"         :   ["Chromoting Viewer",
                                                                                         "Chromium PDF Viewer"],
                                                                                         }
            opts.add_experimental_option(       "prefs", profile)
        def set_performance_logging(self):
            perfLogging                     =   {
                                                 "enableNetwork"                    :   True,
                                                 "enablePage"                       :   True,
                                                 "enableTimeline"                   :   True,
                                                 #"tracingCategories":<string>,
                                                 "bufferUsageReportingInterval"     :   1000
                                                }

            opts.add_experimental_option(     "perfLoggingPrefs",perfLogging)
        def set_chrome_options(self):
            from selenium.webdriver             import ChromeOptions
            opts                            =   ChromeOptions()

            ### Add Boolean Arguments
            if T.has_key('true_opts'):
                for it in T['true_opts']:
                    opts.add_argument(          '%s=1' % it )
            if T.has_key('false_opts'):
                for it in T['false_opts']:
                    opts.add_argument(          '%s=0' % it )

            value_opts                      =   [
                                                 'profile-directory',
                                                 'log-level',                   # 0 to 3: INFO = 0, WARNING = 1, LOG_ERROR = 2, LOG_FATAL = 3
                                                 'net-log-capture-mode',        # "Default" "IncludeCookiesAndCredentials" "IncludeSocketBytes"'
                                                 'register-font-files',         # might be windows only
                                                 'remote-debugging-port',
                                                 'user-agent',
                                                 'user-data-dir',               # don't use b/c it negates no-extension options
                                                 ]

            ### Add Value Arguments
            for it in value_opts:
                if T.has_key(it):
                    opts.add_argument(           '%s=%s' % (it,T[it]) )

            ### OTHER CHROME OPTIONS NOT YET FULLY CONFIGURED

            # -extensions        list str
            # -localState        dict
            # -prefs             dict
            # set_profile()

            # -detach            bool
            # -debuggerAddress   str
            # -excludeSwitches   list str
            # -minidumpPath      str
            # -mobileEmulation   dict

            # -perfLoggingPrefs             OBJECT (dict)
            # set_performance_logging()

            return opts

        from selenium.webdriver             import Chrome

        T                                   =  {}
        if kwargs:
            T.update(                           kwargs)
        if (hasattr(self,'T') and hasattr(self.T,'kwargs')):
            T.update(                           self.T.kwargs)

        # Cycle Through kwargs and Extract Configs
        if hasattr(self.T,'id'):
            T.update(                           self.T.id.__dict__)

            if hasattr(self.T.id,'details'):
                for k,v in self.T.id.details.__dict__.iteritems():
                    T.update(                   { k.strip('_')                      :   v})

            if hasattr(self.T.id,'cookie'):
                if hasattr(self.T.id.cookie,'content'):
                    T.update(                   {'cookie_content'                   :   self.T.id.cookie.content})

        # Set Defaults if not provided
        if not T.has_key('defaults'):
            T                               =   set_defaults(self)

        # Config Data Storage if Possible
        if T.has_key('SAVE_DIR'):
            T['user-data-dir']              =   T['SAVE_DIR']
            T['profile-directory']          =   'Profile'
        if T.has_key('guid'):
            T['log_path']                   =   '%s/%s.log' % (T['SAVE_DIR'],T['guid'])

        # Configure with Special Profiles if Requested
        special_profiles                    =   os_environ['BD'] + '/html/webdrivers/chrome/profiles'
        if T.has_key('no_java') and T['no_java']:
            if T.has_key('no_plugins') and T['no_plugins']:
                T['user-data-dir']          =   special_profiles + '/no_java_no_plugins/'
                del T['profile-directory']
            else:
                T['user-data-dir']          =   special_profiles + '/no_java/'
                del T['profile-directory']
        elif T.has_key('no_plugins') and T['no_plugins']:
            T['user-data-dir']              =   special_profiles + '/no_plugins/'
            del T['profile-directory']



        # SERVICE ARGS          # ( somewhat documented in executable help, i.e., chromedriver --help )
        service_args                        =   ["--verbose",
                                                 "--log-path=%(log_path)s" % T]

        dc                                  =   set_desired_capabilities(self)
        opts                                =   set_chrome_options(self)

        d                                   =   Chrome(  executable_path        =   T['bin_path'],
                                                         port                   =   T['port'],
                                                         service_args           =   service_args,
                                                         desired_capabilities   =   dc,
                                                         chrome_options         =   opts)
        d.set_window_size(                      1280,720)
        if T['cookie_content']:
            d.add_cookie(                       T['cookie_content'])

        self.config_browser(                    d,kwargs)


        return d,T
Beispiel #41
0
class SelemimumCrawler:
    __PAGE_URL = "https://www.facebook.com/"
    __EMAIL_INPUT_XPATH = "//input[@name='email']"
    __PASSWORD_INPUT_XPATH = "//input[@name='pass']"
    __ACCOUNT_LINK_XPATH = "//*[@id='userNav']/ul/li[1]/a"
    __FRIENDS_AMOUNT_XPATH = "//*[@data-tab-key='friends']/span[1]"
    __FRIENDS_LINK_XPATH = "//*[@data-tab-key='friends']"
    __FRIENDS_XPATH = "//*[@class='fsl fwb fcb']/a"
    __ACCOUNT_NAME = "//*[@id='fb-timeline-cover-name']/a"

    def __init__(self, driver_path="chromedriver", options=None):
        Logger.info(__file__, "SeleniumCrawler init")

        try:
            self.driver = Chrome(executable_path=driver_path, options=options)
            Logger.info(__file__, "Driver initiated")
        except WebDriverException as err:
            Logger.error(__file__, err.args)

        self.configs = Configuration()

    def execute(self):
        data = dict()

        Logger.info(__file__, f"Opening {self.__PAGE_URL} page")
        self.driver.get(self.__PAGE_URL)

        Logger.info(__file__, "Finding login input web element")
        login_web_element = self.get_element(
            by=By.XPATH,
            value=self.__EMAIL_INPUT_XPATH,
            wait=self.configs.settings[Values.SETTINGS][
                Values.ELEMENT_WAIT_TIME])

        Logger.info(__file__, "Send email to login input web element}")
        login_web_element.send_keys(
            self.configs.settings[Values.SETTINGS][Values.FACEBOOK_LOGIN])

        Logger.info(__file__, "Finding password input web element")
        password_web_element = self.get_element(
            by=By.XPATH,
            value=self.__PASSWORD_INPUT_XPATH,
            wait=self.configs.settings[Values.SETTINGS][
                Values.ELEMENT_WAIT_TIME])

        Logger.info(__file__, "Send password to password input web element}")
        password_web_element.send_keys(
            self.configs.settings[Values.SETTINGS][Values.FACEBOOK_PASSWORD])

        Logger.info(__file__,
                    "Send Enter key pressing to password input web element}")
        password_web_element.send_keys(Keys.ENTER)

        Logger.info(__file__, "Finding account link")
        account_button_web_element = self.get_element(
            by=By.XPATH,
            value=self.__ACCOUNT_LINK_XPATH,
            wait=self.configs.settings[Values.SETTINGS][
                Values.ELEMENT_WAIT_TIME])
        Logger.info(__file__, "Click on account link")
        account_button_web_element.click()

        Logger.info(__file__, "Extracting total friends amount value")
        total_friends_amount = int(
            self.get_element(by=By.XPATH,
                             value=self.__FRIENDS_AMOUNT_XPATH,
                             wait=self.configs.settings[Values.SETTINGS][
                                 Values.ELEMENT_WAIT_TIME]).text)
        Logger.debug(__file__, f"Extracted {total_friends_amount} value")

        Logger.info(__file__, "Finding friends page link")
        friends = self.get_element(by=By.XPATH,
                                   value=self.__FRIENDS_LINK_XPATH,
                                   wait=self.configs.settings[Values.SETTINGS][
                                       Values.ELEMENT_WAIT_TIME])

        Logger.info(__file__, "Click on friends page link")
        friends.click()

        Logger.info(__file__, "Extracting account name")
        name = self.get_element(by=By.XPATH,
                                value=self.__ACCOUNT_NAME,
                                wait=self.configs.settings[Values.SETTINGS][
                                    Values.ELEMENT_WAIT_TIME]).text

        friends = self.__get_friends_list()

        previous_friend_amount = 0
        current_friends_amount = len(friends)

        while previous_friend_amount != current_friends_amount:
            Logger.info(__file__, "Friends list can be scroll")

            previous_friend_amount = current_friends_amount

            Logger.info(__file__, "Scroll to last friends list element")
            ActionChains(self.driver).move_to_element(friends[-1]).perform()

            time.sleep(1)

            friends = self.__get_friends_list()

            current_friends_amount = len(friends)

        Logger.info(__file__, "Full friends list already loaded")

        Logger.info(__file__, "Extract data from friends web elements list")

        data["Account name: "] = name

        for friend in friends:
            link = friend.get_attribute("href")
            data[link[:friend.get_attribute('href').find('fref') -
                      1]] = friend.text

        Logger.info(__file__, "Closing web driver")

        Logger.info(__file__, "Closing selenium web driver")

        self.driver.quit()

        data["Total friends amount"] = total_friends_amount
        data["Scanned friends amount"] = current_friends_amount

        return data

    def __get_friends_list(self):
        Logger.info(__file__, "Load friends list web elements")

        list = self.get_elements(by=By.XPATH,
                                 value=self.__FRIENDS_XPATH,
                                 wait=self.configs.settings[Values.SETTINGS][
                                     Values.ELEMENT_WAIT_TIME])

        Logger.debug(__file__, f"Size of loaded friends list: {len(list)}")
        return list

    def get_element(self, by, value, wait=0):
        try:
            return WebDriverWait(self.driver, wait).until(
                EC.presence_of_element_located((by, value)))
        except TimeoutException as err:
            Logger.error(__file__, err.args)

    def get_elements(self, by, value, wait=0):
        try:
            return WebDriverWait(self.driver, wait).until(
                EC.presence_of_all_elements_located((by, value)))
        except TimeoutException as err:
            Logger.error(__file__, err.args)
Beispiel #42
0
def processing(url, name, ticker, path_):
    options = webdriver.ChromeOptions()
    options.add_argument('headless')
    browser = Chrome(executable_path = getcwd() + '/Driver/chromedriver_Windows.exe', chrome_options = options)
    browser.get(url)
    search_form = browser.find_element_by_xpath('''/html/body/div[5]/header/div[1]/div/div[3]/div[1]/input''')
    search_form.send_keys(name)
    search_form.send_keys(Keys.ENTER)
    search_form = browser.find_element_by_xpath('''//*[@id="fullColumn"]/div/div[2]/div[2]/div[1]/a[1]''')
    search_form.click()
    search_form = browser.find_element_by_xpath('''//*[@id="pairSublinksLevel1"]/li[3]/a''')
    search_form.click()
    news = []
    dates = []
    pages_table = browser.find_element_by_xpath('''//*[@id="paginationWrap"]/div[2]''')
    for i in range(2):
        pages_table.find_element_by_link_text(str(i+1)).click()
        table = browser.find_element_by_xpath('''//*[@id="leftColumn"]/div[8]''')
        articles = table.find_elements_by_class_name('articleItem')
        for article in articles:
            text = article.find_element_by_class_name('textDiv').find_element_by_tag_name('a').text
            date = article.find_element_by_class_name('articleDetails').find_element_by_class_name('date').text
            news.append(text)
            dates.append(date)
    data = []
    for i in range(len(news)):
        data.append((replace_shit(change_date(dates[i])), lemmatizator(news[i])))
    with open(path_ + 'News' + ticker + '.csv','w') as f:
        writer = csv.writer(f)
        writer.writerow(('Date', 'New'))
        for i in data:
            writer.writerow(i)
    browser.close()
    print(name + ' - done')
 def run(self):
     options = ChromeOptions()
     options.add_argument('--test-type')
     self.driver = Chrome(chrome_options=options)
     self.perform_steps()
     self.driver.close()
Beispiel #44
0
from selenium.webdriver import Chrome
from time import sleep

url = 'https://selenium.dunossauro.live/exercicio_06.html'

browser = Chrome()

browser.get(url)


def preencher_form(browser, form, nome, senha):
    sleep(2)
    context = browser.find_element_by_css_selector(f'.form-{form}')
    inputs_form = {
        'nome': context.find_element_by_name('nome'),
        'senha': context.find_element_by_name('senha'),
        'enviar': context.find_element_by_css_selector('[type="submit"]')
    }

    inputs_form['nome'].send_keys(nome)
    inputs_form['senha'].send_keys(senha)
    inputs_form['enviar'].click()


for n in range(7):
    sleep(2)
    form = browser.find_element_by_css_selector('span').text
    preencher_form(browser, form, f'elza{n}', f'123{n}')
def test_invalid_data1():
    path = "C:\\Users\\chirag\\Downloads\\chromedriver_win32\\chromedriver.exe"
    driver = Chrome(executable_path=path)
    driver.get("http://www.thetestingworld.com/testings")
    driver.maximize_window()
Beispiel #46
0
 def setUp(self):
     options = ChromeOptions()
     options.add_argument("--no-sandbox")
     self.browser = Chrome(options=options)
Beispiel #47
0
import os
from dotenv import load_dotenv
from selenium.webdriver import Chrome, ChromeOptions
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException

load_dotenv()

opts = ChromeOptions()
opts.binary_location = os.environ.get("GOOGLE_CHROME_BIN")
opts.add_argument("--headless")
opts.add_argument("--no-sandbox")
opts.add_argument("--disable-dev-sh-usage")
driver = Chrome(executable_path=os.environ.get("CHROMEDRIVER_PATH"),
                options=opts)

#Sub of the Week
sotw = ''


def get_sub_of_the_week():
    global sotw
    i = 0
    while i < 3:
        print('Fetching Sub of the Week...')
        try:
            set_publix_store()
            driver.get('https://www.publix.com/savings/weekly-ad')
            driver.find_element_by_xpath("//a[@id='deli']").click()
            sotw = driver.find_element_by_xpath(
def Driver(url):
    driver = Chrome()
    driver.get(url)
    current_windows = driver.window_handles
    print(current_windows)
Beispiel #49
0
class FilterKeyError(KeyError):
    def __init__(self, key, filters):
        # out = 'Potential filters: ' + ' '.join(filters.keys()) + ' doesn\'t contain ' + key
        flist = ' '.join(filters.keys())
        out = 'Desired filter %s not found in available filters (%s)' %(key, flist)
        super(FilterKeyError, self).__init__(out)

class DetailsPage(BasePage):

    @property
    def foodName(self):
        return self.driver.find_element_by_class_name('scout-spot-name')

    @property
    def foodCuisines(self):
        return self.driver.find_element_by_class_name('scout-spot-cuisine')

    @property
    def foodType(self):
        return self.driver.find_element_by_class_name('scout-spot-type')

    @property
    def openStatus(self):
        return self.driver.find_element_by_class_name('scout-spot-status')

if __name__ == '__main__':
    from selenium.webdriver import Firefox, Chrome
    d = Chrome()
    d.get('http://localhost:8001/')
    page = HomePage(d)
Beispiel #50
0
class WebBot():
    def __init__(self):
        self.driver = Chrome()

    def login(self):

        self.driver.get(
            "https://adfs.inacap.cl/adfs/ls/?wtrealm=https://siga.inacap.cl/sts/&wa=wsignin1.0&wreply=https://siga.inacap.cl/sts/&wctx=https%3a%2f%2fadfs.inacap.cl%2fadfs%2fls%2f%3fwreply%3dhttps%3a%2f%2fwww.inacap.cl%2ftportalvp%2fintranet-alumno%26wtrealm%3dhttps%3a%2f%2fwww.inacap.cl%2f"
        )

        el = WebDriverWait(self.driver, timeout=30).until(
            lambda d: d.find_element_by_xpath('//*[@id="userNameInput"]'))
        inputUsr = self.driver.find_element_by_xpath(
            '//*[@id="userNameInput"]')
        inputUsr.send_keys(username)

        inputPass = self.driver.find_element_by_xpath(
            '//*[@id="passwordInput"]')
        inputPass.send_keys(password)

        inputLogin = self.driver.find_element_by_xpath(
            '//*[@id="submitButton"]')
        inputLogin.click()
        sleep(10)

    def getSede(self):

        el = WebDriverWait(
            self.driver, timeout=30).until(lambda d: d.find_element_by_xpath(
                '/html/body/div[1]/div/section[3]/div[1]/ul/li[3]/a'))
        self.driver.find_element_by_xpath(
            '/html/body/div[1]/div/section[3]/div[1]/ul/li[3]/a').click()
        sleep(3)
        self.driver.switch_to.window(self.driver.window_handles[1])

        el = WebDriverWait(
            self.driver, timeout=30
        ).until(lambda d: d.find_element_by_xpath(
            '/html/body/div[2]/div[2]/div/div/section/div/div/aside/aside[2]/div/div/div[1]/ul/li[2]/a'
        ))
        self.driver.find_element_by_xpath(
            '/html/body/div[2]/div[2]/div/div/section/div/div/aside/aside[2]/div/div/div[1]/ul/li[2]/a'
        ).click()

        el = WebDriverWait(self.driver, timeout=30).until(
            lambda d: d.find_elements_by_css_selector('div.media'))
        clases = self.driver.find_elements_by_css_selector('div.media')
        for x in clases:
            sede = x.find_element_by_tag_name('a').text
            match = re.search('Santiago Centro', sede)
            if match:
                print('Sede: ' + match.group())
                self.driver.close()
                self.driver.switch_to.window(self.driver.window_handles[0])
                return
        print('La sede no es la especificad')
        self.driver.close()
        self.driver.switch_to.window(self.driver.window_handles[0])
        self.driver.close()
        input('Pulse una tecla para finalizar')
        raise SystemExit

    def getCarrera(self):

        el = WebDriverWait(self.driver, timeout=30).until(
            lambda d: d.find_element_by_xpath('//*[@id="t1_contenido"]'))
        cont = self.driver.find_element_by_xpath('//*[@id="t1_contenido"]')
        carrera = cont.find_element_by_tag_name('h3')
        print('La carrera es: ' + carrera.text)
        if carrera.text == 'Ingeniería en Informática' or carrera.text == 'Analista Programador':
            print('Usted es de la carrera c:')
            return
        print('Usted no es de la carrera :c')
        self.driver.close()
        input('Pulse una tecla para finalizar')
        raise SystemExit

    def getRamos(self):

        el = WebDriverWait(self.driver, timeout=30).until(
            lambda d: d.find_element_by_link_text('Mi Malla'))
        self.driver.find_element_by_link_text('Mi Malla').click()
        sleep(3)
        self.driver.switch_to.window(self.driver.window_handles[1])
        pattern = re.compile('^TI[a-zA-Z0-9]*')
        ti = []

        el = WebDriverWait(self.driver, timeout=30).until(
            lambda d: d.find_elements_by_css_selector('div.card'))
        clases = self.driver.find_elements_by_css_selector('div.card')
        for x in clases:
            match = pattern.match(x.find_element_by_tag_name('p').text)
            if match:
                name = x.find_element_by_tag_name('h5').text
                print(name)
                ti.append(name)
        self.driver.close()
        self.driver.switch_to.window(self.driver.window_handles[0])
        return ti

    def goToEmail(self, ti):

        lista = {}

        el = WebDriverWait(
            self.driver, timeout=30).until(lambda d: d.find_element_by_xpath(
                '/html/body/div/div/section[3]/div[1]/div[1]/div[1]/h5'))
        self.driver.find_element_by_xpath(
            '/html/body/div/div/section[3]/div[1]/div[1]/div[1]/h5').click()
        sleep(1)
        el = WebDriverWait(
            self.driver, timeout=30).until(lambda d: d.find_element_by_xpath(
                '/html/body/div/div/section[3]/div[1]/div[1]/div[1]/ul/li[4]/a'
            ))
        self.driver.find_element_by_xpath(
            '/html/body/div/div/section[3]/div[1]/div[1]/div[1]/ul/li[4]/a'
        ).click()

        sleep(3)

        self.driver.switch_to.window(self.driver.window_handles[1])

        # entrar a curso
        el = WebDriverWait(
            self.driver,
            timeout=30).until(lambda d: d.find_elements_by_class_name('curso'))
        cursos = self.driver.find_elements_by_class_name('curso')
        for curso in cursos:
            if curso.text in ti:
                print('\n' + curso.text)
                el = WebDriverWait(self.driver, timeout=30).until(
                    lambda d: curso.find_element_by_tag_name('a'))
                curso.find_element_by_tag_name('a').click()

                el = WebDriverWait(
                    self.driver, timeout=30
                ).until(lambda d: d.find_element_by_xpath(
                    '/html/body/form/div[4]/div[3]/div/div/div/div[2]/div/div/div[1]/div[2]/label/select'
                ))
                cb = Select(
                    self.driver.find_element_by_xpath(
                        '/html/body/form/div[4]/div[3]/div/div/div/div[2]/div/div/div[1]/div[2]/label/select'
                    ))
                cb.select_by_visible_text('100')

                # sacar lista de alumnos
                sleep(2)
                el = WebDriverWait(self.driver, timeout=30).until(
                    lambda d: d.find_elements_by_css_selector('td.sorting_1'))
                nom = self.driver.find_elements_by_css_selector('td.sorting_1')
                mails = self.driver.find_elements_by_css_selector('td.curso')

                # limpiar basura
                aux = mails.copy()
                for x in aux:
                    if len(x.text) < 1: mails.remove(x)

                # Llenar lista de estudiantes a mandar
                for x in range(len(nom)):
                    lista[x] = {'name': nom[x].text, 'email': mails[x].text}
                    print('nombre: ' + nom[x].text + '\tCorreo: ' +
                          mails[x].text + '\n')  #cambiar por output de correos
                self.driver.find_element_by_xpath(
                    '//*[@id="btnVolver"]').click()
                sleep(1)
        self.driver.close()
        self.driver.switch_to.window(self.driver.window_handles[0])
        return lista
Beispiel #51
0
class NewVisitorTest(LiveServerTestCase):
    def setUp(self):
        options = ChromeOptions()
        options.add_argument("--no-sandbox")
        self.browser = Chrome(options=options)

    def TearDown(self):
        self.browser.quit()

    def wait_for_row_in_list_table(self, row_text):
        start_time = time.time()
        while True:
            try:
                table = self.browser.find_element_by_id('id_list_table')
                rows = table.find_elements_by_tag_name('tr')
                self.assertIn(row_text, [row.text for row in rows])
                return
            except (AssertionError, WebDriverException) as e:
                if time.time() - start_time > MAX_WAIT:
                    raise e
                time.sleep(0.5)

    def test_can_start_a_list_for_one_user(self):
        # Edith has heard about a cool new online to-do app. She goes
        # to check out its homepage
        self.browser.get(self.live_server_url)

        # She notices the page title and header mention to-do lists
        self.assertIn('To-Do', self.browser.title)
        header_text = self.browser.find_element_by_tag_name('h1').text
        self.assertIn('To-Do', header_text)

        # She is invited to enter a to-do item straight away
        inputbox = self.browser.find_element_by_id('id_new_item')
        self.assertEqual(inputbox.get_attribute('placeholder'),
                         'Enter a to-do item')

        # She types "Buy peacock feathers" into a text box (Edith's hobby
        # is tying fly-fishing lures)
        inputbox.send_keys('Buy peacock feathers')

        # When she hits enter, the page updates, and now the page lists
        # "1: Buy peacock feathers" as an item in a to-do list table
        inputbox.send_keys(Keys.ENTER)
        self.wait_for_row_in_list_table('1: Buy peacock feathers')

        # There is still a text box inviting her to add another item. She
        # enters "Use peacock feathers to make a fly" (Edith is very
        # methodical)
        inputbox = self.browser.find_element_by_id('id_new_item')
        inputbox.send_keys('Use peacock feathers to make a fly')
        inputbox.send_keys(Keys.ENTER)

        # The page updates again, and now shows both items on her list
        self.wait_for_row_in_list_table(
            '2: Use peacock feathers to make a fly')
        self.wait_for_row_in_list_table('1: Buy peacock feathers')

        # Satisfied, she goes back to sleep

    def test_multiple_users_can_start_lists_at_different_urls(self):
        # Edith starts a new to-do list
        self.browser.get(self.live_server_url)
        inputbox = self.browser.find_element_by_id('id_new_item')
        inputbox.send_keys('Buy peacock feathers')
        inputbox.send_keys(Keys.ENTER)
        self.wait_for_row_in_list_table('1: Buy peacock feathers')

        # She notices that her list has a unique URL
        edith_list_url = self.browser.current_url
        self.assertRegex(edith_list_url, '/lists/.+')

        # Now a new user, Francis, comes along to the site.

        ## We use a new browser session to make sure that no information
        ## of Edith's is coming through from cookies etc
        self.browser.quit()
        options = ChromeOptions()
        options.add_argument("--no-sandbox")
        self.browser = Chrome(options=options)

        # Francis visits the home page.  There is no sign of Edith's
        # list
        self.browser.get(self.live_server_url)
        page_text = self.browser.find_element_by_tag_name('body').text
        self.assertNotIn('Buy peacock feathers', page_text)
        self.assertNotIn('make a fly', page_text)

        # Francis starts a new list by entering a new item. He
        # is less interesting than Edith...
        inputbox = self.browser.find_element_by_id('id_new_item')
        inputbox.send_keys('Buy milk')
        inputbox.send_keys(Keys.ENTER)
        self.wait_for_row_in_list_table('1: Buy milk')
        # Francis gets his own unique URL
        francis_list_url = self.browser.current_url
        self.assertRegex(francis_list_url, '/lists/.+')
        self.assertNotEqual(francis_list_url, edith_list_url)
        # Again, there is no trace of Edith's list
        page_text = self.browser.find_element_by_tag_name('body').text
        self.assertNotIn('Buy peacock feathers', page_text)
        self.assertIn('Buy milk', page_text)

        # Satisfied, they both go back to sleep

    def test_layout_and_styling(self):
        # Edith goes to the home page
        self.browser.get(self.live_server_url)
        self.browser.set_window_size(1024, 768)

        # She notices the input box is nicely centered
        inputbox = self.browser.find_element_by_id('id_new_item')
        self.assertAlmostEqual(inputbox.location['x'] +
                               inputbox.size['width'] / 2,
                               512,
                               delta=10)
Beispiel #52
0
class SeleniumTestCase(LiveServerTestCase):
    """
    Base class for Selenium tests.  Allows tests to be written independently
    of which browser they're going to be run in.
    """

    @classmethod
    def appium_command_executor(cls):
        """ Get the command executor URL for iOS simulator testing """
        if hasattr(cls, '_appium_executor'):
            return cls._appium_executor
        # Get the address iWebDriver will connect to
        address = None
        try:
            address = socket.gethostbyname(socket.gethostname())
        except:
            # Use default address defined below
            pass
        # If we don't have an address we should use localhost
        if not address:
            address = '127.0.0.1'
        port = 4723
        cls._appium_executor = "".join(["http://", address, ":", str(port),
                                       '/wd/hub'])
        return cls._appium_executor

    @classmethod
    def setUpClass(cls):
        # Create the screenshots directory if it doesn't exist yet
        screenshot_dir = settings.SELENIUM_SCREENSHOT_DIR
        if screenshot_dir and not os.path.exists(screenshot_dir):
            os.makedirs(screenshot_dir)
        super(SeleniumTestCase, cls).setUpClass()

    @classmethod
    def tearDownClass(cls):
        super(SeleniumTestCase, cls).tearDownClass()

    def setUp(self):
        """ Start a new browser instance for each test """
        self._screenshot_number = 1
        self.browser = os.getenv('SELENIUM_BROWSER',
                                 settings.SELENIUM_DEFAULT_BROWSER)
        if os.getenv('SELENIUM_HOST'):
            self.sel = self.sauce_labs_driver()
        elif self.browser == 'firefox':
            self.sel = Firefox()
        elif self.browser == 'htmlunit':
            self.sel = RemoteWebDriver(desired_capabilities=DesiredCapabilities.HTMLUNITWITHJS)
        elif self.browser in ['ios', 'ipad', 'ipod', 'iphone']:
            capabilities = {
                'app': 'safari',
                'browserName': '',
                'device': 'iPhone Simulator',
                'os': 'iOS 6.1'
            }
            self.sel = RemoteWebDriver(command_executor=self.appium_command_executor(),
                                       desired_capabilities=capabilities)
        elif self.browser == 'opera':
            self.sel = RemoteWebDriver(desired_capabilities=DesiredCapabilities.OPERA)
        elif self.browser == 'iexplore':
            self.sel = RemoteWebDriver(desired_capabilities=DesiredCapabilities.INTERNETEXPLORER)
        elif self.browser == 'phantomjs':
            self.sel = PhantomJS(service_args=['--debug=true',
                                               '--webdriver-loglevel=DEBUG'])
        elif self.browser == 'safari':
            # requires a Safari extension to be built from source and installed
            self.sel = RemoteWebDriver(desired_capabilities=DesiredCapabilities.SAFARI)
        else:
            self.sel = Chrome()
        self.sel.set_page_load_timeout(settings.SELENIUM_PAGE_LOAD_TIMEOUT)
        # Give the browser a little time; Firefox throws random errors if you
        # hit it too soon
        time.sleep(1)

    def tearDown(self):
        # Check to see if an exception was raised during the test
        info = sys.exc_info()
        passed = info[0] is None
        if not passed:
            # Want to see what went wrong
            self.screenshot()
        self.report_status(passed)
        if hasattr(self, 'sel'):
            self.sel.quit()
        super(SeleniumTestCase, self).tearDown()

    # ~~~~~~~~~~~~~~~~~~~~~~~~~ Selenium operations ~~~~~~~~~~~~~~~~~~~~~~~~~~

    def assert_hidden(self, selector):
        element = self.wait_for_element(selector)
        msg = "'%s' should not be visible" % selector
        assert not element.is_displayed(), msg

    def assert_not_present(self, selector):
        assert_raises(NoSuchElementException,
                      self.sel.find_element_by_css_selector, selector)

    def assert_not_visible(self, selector):
        """ Ok if it's either missing or hidden """
        try:
            element = self.sel.find_element_by_css_selector(selector)
        except NoSuchElementException:
            return
        msg = "'%s' should not be visible" % selector
        assert not element.is_displayed(), msg

    def assert_text_not_in_element(self, selector, text):
        """ Verify that the specified element does not contain certain text """
        msg = "'%s' should not contain the text '%s'" % (selector, text)
        content = self.sel.find_element_by_css_selector(selector).text
        assert text not in content, msg

    def assert_visible(self, selector):
        element = self.wait_for_element(selector)
        msg = "'%s' should be visible" % selector
        assert element.is_displayed(), msg

    def audit_accessibility(self):
        """ Check for accessibility violations using the JavaScript library
        from Chrome's Developer Tools. """
        # First add the library to the page
        script = ''
        for line in ADD_ACCESSIBILITY_SCRIPT.splitlines():
            script += line.strip()
        self.sel.execute_script(script)
        # Wait for the script to finish loading
        self.wait_for_condition('return axs.AuditRule.specs.videoWithoutCaptions !== "undefined";')
        # Now run the audit and inspect the results
        self.sel.execute_script('axs_audit_results = axs.Audit.run();')
        failed = self.sel.execute_script('return axs_audit_results.some(function (element, index, array) { return element.result === "FAIL" });')
        if failed:
            report = self.sel.execute_script('return axs.Audit.createReport(axs_audit_results);')
            raise self.failureException(report)

    def click(self, selector):
        """ Click the element matching the selector (and retry if it isn't
        visible or clickable yet) """
        element = self.wait_for_element(selector)
        element_was_clicked = lambda driver: lambda_click(element)
        msg = "The element matching '%s' should be clickable" % selector
        Wait(self.sel).until(element_was_clicked, msg)
        return element

    def click_link_with_text(self, text):
        link_is_present = lambda driver: driver.find_element_by_link_text(text)
        msg = "A link with text '%s' should be present" % text
        link = Wait(self.sel).until(link_is_present, msg)
        link.click()
        return link

    def click_link_with_xpath(self, xpath):
        link_is_present = lambda driver: driver.find_element_by_xpath(xpath)
        msg = "A link with xpath '%s' should be present" % xpath
        link = Wait(self.sel).until(link_is_present, msg)
        link.click()
        return link

    def enter_text(self, selector, value):
        field = self.wait_for_element(selector)
        field.send_keys(value)
        self.screenshot()
        return field

    def enter_text_via_xpath(self, xpath, value):
        field = self.wait_for_xpath(xpath)
        field.send_keys(value)
        self.screenshot()
        return field

    def get(self, relative_url):
        self.sel.get('%s%s' % (self.live_server_url, relative_url))
        self.screenshot()

    def screenshot(self):
        if hasattr(self, 'sauce_user_name'):
            # Sauce Labs is taking screenshots for us
            return
        if not hasattr(self, 'browser') or self.browser == 'htmlunit':
            # Can't take screenshots
            return
        screenshot_dir = settings.SELENIUM_SCREENSHOT_DIR
        if not screenshot_dir:
            return
        name = "%s_%d.png" % (self._testMethodName, self._screenshot_number)
        path = os.path.join(screenshot_dir, name)
        self.sel.get_screenshot_as_file(path)
        self._screenshot_number += 1

    def select_by_text(self, selector, text):
        select = Select(self.wait_for_element(selector))
        select.select_by_visible_text(text)
        self.screenshot()
        return select

    def select_by_value(self, selector, value):
        select = Select(self.wait_for_element(selector))
        select.select_by_value(value)
        self.screenshot()
        return select

    def select_text(self, selector, start=0, end=-1):
        """ Selects the specified text range of the element matching the
        provided selector by simulating a mouse down, programmatically
        selecting the text, and then simulating a mouse up.  Doesn't yet work
        on IE < 9 or iOS. Doesn't support nested markup either. """
        if not hasattr(self, 'select_text_template'):
            template = ''
            for line in SELECT_TEXT_SOURCE.splitlines():
                template += line.strip()
            self.select_text_template = template
        script = self.select_text_template % (selector, start, end)
        self.sel.execute_script(script)
        self.screenshot()

    def wait_for_background_color(self, selector, color_string):
        color = Color.from_string(color_string)
        correct_color = lambda driver: Color.from_string(driver.find_element_by_css_selector(selector).value_of_css_property("background-color")) == color
        msg = "The color of '%s' should be %s" % (selector, color_string)
        Wait(self.sel).until(correct_color, msg)
        self.screenshot()

    def wait_for_condition(self, return_statement, msg=None):
        """Wait until the provided JavaScript expression returns true.
        Note: for this to work, the expression must include the "return"
        keyword, not just the expression to be evaluated."""
        condition_is_true = lambda driver: driver.execute_script(return_statement)
        if not msg:
            msg = '"{}" never became true'.format(return_statement)
        Wait(self.sel).until(condition_is_true, msg)

    def wait_for_element(self, selector):
        element_is_present = lambda driver: driver.find_element_by_css_selector(selector)
        msg = "An element matching '%s' should be on the page" % selector
        element = Wait(self.sel).until(element_is_present, msg)
        self.screenshot()
        return element

    def wait_for_text(self, text):
        text_is_present = lambda driver: text in driver.page_source
        msg = "The text '%s' should be present on the page" % text
        Wait(self.sel).until(text_is_present, msg)
        self.screenshot()

    def wait_for_xpath(self, xpath):
        element_is_present = lambda driver: driver.find_element_by_xpath(xpath)
        msg = "An element matching '%s' should be on the page" % xpath
        element = Wait(self.sel).until(element_is_present, msg)
        self.screenshot()
        return element

    def wait_until_element_contains(self, selector, text):
        """ Wait until the specified element contains certain text """
        text_contained = lambda driver: text in driver.find_element_by_css_selector(selector).text
        msg = "'%s' should contain the text '%s'" % (selector, text)
        Wait(self.sel).until(text_contained, msg)
        self.screenshot()

    def wait_until_hidden(self, selector):
        """ Wait until the element matching the selector is hidden """
        element = self.wait_for_element(selector)
        element_is_hidden = lambda driver: not element.is_displayed()
        msg = "The element matching '%s' should not be visible" % selector
        Wait(self.sel).until(element_is_hidden, msg)
        self.screenshot()
        return element

    def wait_until_not_present(self, selector):
        """ Wait until the element matching the selector is gone from page """
        element_is_present = lambda driver: driver.find_element_by_css_selector(selector)
        msg = "There should not be an element matching '%s'" % selector
        Wait(self.sel).until_not(element_is_present, msg)
        self.screenshot()

    def wait_until_not_visible(self, selector):
        """ Wait until the element matching the selector is either hidden or
        removed from the page """
        element_is_visible = lambda driver: driver.find_element_by_css_selector(selector).is_displayed()
        msg = "The element matching '%s' should not be visible" % selector
        Wait(self.sel).until_not(element_is_visible, msg)
        self.screenshot()

    def wait_until_option_added(self, selector, option_text):
        """ Wait until the specified select option appears; the entire
        select widget may be replaced in the process """
        end_time = time.time() + settings.SELENIUM_TIMEOUT
        while True:
            try:
                select = Select(self.sel.find_element_by_css_selector(selector))
                for option in select.options:
                    if option.text == option_text:
                        return option
            except (NoSuchElementException, StaleElementReferenceException):
                pass
            time.sleep(settings.SELENIUM_POLL_FREQUENCY)
            if time.time() > end_time:
                break
        raise TimeoutException("Select option should have been added")

    def wait_until_option_disabled(self, selector, option_text):
        """ Wait until the specified select option is disabled; the entire
        select widget may be replaced in the process """
        end_time = time.time() + settings.SELENIUM_TIMEOUT
        while True:
            try:
                select = Select(self.sel.find_element_by_css_selector(selector))
                for option in select.options:
                    if option.text == option_text and not option.is_enabled():
                        return option
            except (NoSuchElementException, StaleElementReferenceException):
                pass
            time.sleep(settings.SELENIUM_POLL_FREQUENCY)
            if time.time() > end_time:
                break
        raise TimeoutException("Select option should have been disabled")

    def wait_until_property_equals(self, selector, name, value):
        """ Wait until the specified CSS property of the element matching the
        provided selector matches the expected value """
        value_is_correct = lambda driver: driver.find_element_by_css_selector(selector).value_of_css_property(name) == value
        msg = "The %s CSS property of '%s' should be %s" % (name, selector,
                                                            value)
        Wait(self.sel).until(value_is_correct, msg)
        self.screenshot()

    def wait_until_offscreen(self, selector):
        """ Wait until the element matching the provided selector has been
        moved offscreen (deliberately, not just scrolled out of view) """
        end_time = time.time() + settings.SELENIUM_TIMEOUT
        while True:
            try:
                element = self.sel.find_element_by_css_selector(selector)
                location = element.location
                size = element.size
                if location["y"] + size["height"] <= 0:
                    self.screenshot()
                    return True
                if location["x"] + size["width"] <= 0:
                    self.screenshot()
                    return True
            except (NoSuchElementException, StaleElementReferenceException):
                pass
            time.sleep(settings.SELENIUM_POLL_FREQUENCY)
            if time.time() > end_time:
                break
        raise TimeoutException("'%s' should be offscreen" % selector)

    def wait_until_onscreen(self, selector):
        """ Wait until the element matching the provided selector has been
        moved into the viewable page """
        end_time = time.time() + settings.SELENIUM_TIMEOUT
        while True:
            try:
                element = self.sel.find_element_by_css_selector(selector)
                location = element.location
                if location["x"] >= 0 and location["y"] >= 0:
                    self.screenshot()
                    return True
            except (NoSuchElementException, StaleElementReferenceException):
                pass
            time.sleep(settings.SELENIUM_POLL_FREQUENCY)
            if time.time() > end_time:
                break
        raise TimeoutException("'%s' should be offscreen" % selector)

    def wait_until_property_less_than(self, selector, name, value):
        """ Wait until the specified CSS property of the element matching the
        provided selector is less than a certain value.  Ignores any
        non-integer suffixes like 'px'. """
        value_is_correct = lambda driver: int(re.match(r'([\d-]+)', driver.find_element_by_css_selector(selector).value_of_css_property(name)).group(1)) < value
        msg = "The %s CSS property of '%s' should be less than %s" % (name, selector, value)
        Wait(self.sel).until(value_is_correct, msg)
        self.screenshot()

    def wait_until_visible(self, selector):
        """ Wait until the element matching the selector is visible """
        element = self.wait_for_element(selector)
        element_is_visible = lambda driver: element.is_displayed()
        msg = "The element matching '%s' should be visible" % selector
        Wait(self.sel).until(element_is_visible, msg)
        return element

    # ~~~~~~~~~~~~~~~~~~~~~~~~~ Sauce Labs support ~~~~~~~~~~~~~~~~~~~~~~~~~~

    def sauce_labs_driver(self):
        """ Configure the Selenium driver to use Sauce Labs """
        host = os.getenv("SELENIUM_HOST", "ondemand.saucelabs.com")
        port = os.getenv("SELENIUM_PORT", "80")
        executor = "".join(["http://", host, ":", port, '/wd/hub'])
        platform = os.getenv("SELENIUM_PLATFORM", "Windows 7")
        version = os.getenv("SELENIUM_VERSION", "")
        self.sauce_user_name = os.getenv("SAUCE_USER_NAME")
        self.sauce_api_key = os.getenv("SAUCE_API_KEY")
        tunnel_id = os.getenv("SAUCE_TUNNEL_ID", "")
        build_number = os.getenv('BUILD_NUMBER')
        job_name = os.getenv('JOB_NAME')
        # http://code.google.com/p/selenium/wiki/DesiredCapabilities
        # https://saucelabs.com/docs/additional-config#desired-capabilities
        caps = {
            'accessKey': self.sauce_api_key,
            'capture-html': True,
            'browserName': self.browser,
            'javascriptEnabled': True,
            'name': self.id(),
            'platform': platform,
            'username': self.sauce_user_name,
            'version': version,
        }
        if build_number and job_name:
            caps['build'] = '{} #{}'.format(job_name, build_number)
        if tunnel_id:
            caps['tunnel-identifier'] = tunnel_id
        if settings.SELENIUM_SAUCE_VERSION:
            caps['selenium-version'] = settings.SELENIUM_SAUCE_VERSION
        remote = webdriver.Remote(command_executor=executor,
                                  desired_capabilities=caps)
        # Store the Sauce session ID to output later for Jenkins integration
        # See https://saucelabs.com/jenkins/5 for details
        sauce_sessions.append('SauceOnDemandSessionID={} job-name={}'.format(remote.session_id, self.id()))
        return remote

    def report_status(self, passed):
        """Report to Sauce Labs whether or not the test passed, so that can be
        reflected in their UI."""
        if not hasattr(self, 'sauce_user_name'):
            # Not using Sauce Labs for this test
            return
        url_pattern = 'http://{}:{}@saucelabs.com/rest/v1/{}/jobs/{}'
        url = url_pattern.format(self.sauce_user_name,
                                 self.sauce_api_key,
                                 self.sauce_user_name,
                                 self.sel.session_id)
        body_content = json.dumps({"passed": passed})
        headers = {
            'Content-Type': 'application/json',
        }
        response = requests.put(url, body_content, headers=headers)
        return response.status_code == 200
from src.main.web_pypom.controls.base_control import BaseControl
from selenium.webdriver.common.by import By
from src.main.web_pypom.controls.wait import wait
from time import sleep


class Button(BaseControl):
    def __init__(self, driver, locator='//*[@id="tsf"]/div[2]/div[3]/center/input[2]'):
        self.locator = (By.XPATH, locator)
        self.driver = driver

    @property
    def button(self):
        return self.driver.find_element(*self.locator)

    @property
    @wait
    def click(self):
        return self.button.click()


if __name__ == '__main__':
    from selenium.webdriver import Chrome
    driver = Chrome()
    driver.get('https://www.google.com')
    bc = Button(driver)
    bc.click
    sleep(3)
    driver.quit()
Beispiel #54
0
    kbo_link.append(link.replace('/watch?v=', '/embed/'))
    kbo_title.append(title)
# print(kbo_link)
# print(kbo_commentlink)
driver.close()

# with open('./kbo_title.json','wt') as f:
#     json.dump(kbo_title,f)
# with open('./kbo_link.json','wt') as f:
#     json.dump(kbo_link,f)

### 유투브 댓글 크롤링 ###
kbo_bonki = []
for li in kbo_commentlink:
    delay = 2
    browser = Chrome()
    browser.implicitly_wait(delay)

    start_url = "https://www.youtube.com" + li
    browser.get(start_url)
    browser.maximize_window()
    print(start_url)
    time.sleep(3)
    body = browser.find_element_by_tag_name('body')

    pagedowns = 2  #2번 밑으로
    while pagedowns:
        body.send_keys(Keys.PAGE_DOWN)
        time.sleep(2)
        pagedowns -= 1
    time.sleep(3)
Beispiel #55
0
from selenium.webdriver.common.keys import Keys #all the modes and methods i'm importing from selenium to python tool
from selenium.webdriver import ActionChains #performing actions
import time
from contextlib import closing
from selenium.webdriver import Chrome

Browser = Chrome('C:\Users\skashem\Desktop\chromedriver\chromedriver')
url = 'http://staging.totsy.com/'

def Input_Field(Field_name,Field_value):
    Browser.find_element_by_xpath(Field_name).send_keys(Field_value)

def Link(Link_Name):
    Browser.find_element_by_xpath(Link_Name).click()

Browser.get(url)
#Log-in Credential
Input_Field("//*[@id='email']","*****@*****.**")
Input_Field("//*[@id='pass']",'skashem3422')
Link("//*[@id='submit-button']")

#Mouse hover to SHOP BY CATEGORY
shop_by_category = Browser.find_element_by_xpath("//*[@id='navByCat']/a/em")
hover = ActionChains(Browser).move_to_element(shop_by_category)
hover.perform()

#Click on boys apparel
Link("//*[@id='navByCat']/ul/li[2]/a")
Link("//*[@id='mainContent']/div[2]/div/div[1]/ul/li[1]/div/a/img")
Link("//*[@id='attribute169']")
Beispiel #56
0
                m.update(string_id.encode('utf8'))
                identifier = m.hexdigest()
                print("hash-------------------->", identifier)
                create_time = str(datetime.datetime.now())
                update_time = ""

                insertdb = InsertDB()
                data_base.append(
                    (property_address, street_add, city, state, zipcode,
                     status_text, phone_number, bathrooms, bedrooms,
                     tax_assessed_value, zestimate, rent_zestimate, home_type,
                     parking, year_built, hoa, heating, lot, cooling,
                     price_sqft, identifier, create_time, update_time))
                insertdb.insert_document(data_base, table_name)

            # return


if __name__ == "__main__":
    print("-----------------start---------------")

    options = Options()
    options.binary_location = "C:\Program Files\Google\Chrome\Application\chrome.exe"
    path = "driver\\chromedriver.exe"
    driver = Chrome(executable_path=path, chrome_options=options)

    driver.get("https://www.zillow.com/")
    time.sleep(2)
    driver.maximize_window()

    main(driver.page_source, driver)
Beispiel #57
0
from selenium.webdriver import Chrome
import getpass
from selenium.webdriver.remote.webdriver import WebDriver
import gzip
import time
import cx_Oracle

browser = Chrome()

def get_job(browser: WebDriver) -> str:
    rows = browser.find_elements_by_css_selector('tr.table_row')

    for row in rows:
        cells = row.find_elements_by_tag_name('td')
        for i, c in enumerate(cells):
            if c.text == 'AUTOMATION':
                tran_run_id= cells[i+10].text
                return tran_run_id

browser.get('https://eit1-i.svcs.hp.com/cds/') # Site-Minder url
USER1=input("Please enter the User Name:")
PASSWORD1 = getpass.getpass("Password: "******"USER"]')
email.send_keys(USER1)

password = browser.find_element_by_css_selector('input[name="PASSWORD"]')
password.send_keys(PASSWORD1)

logon = browser.find_element_by_css_selector('input.btn.btn-primary')
logon.click()
        filter_btn.click()
        first_shoe_detail = web_driver.find_element_by_css_selector('[alt="Appli Air x Night"]')
        if first_shoe_detail.is_displayed():
            first_shoe_detail.click()

        else:
            print("Shoe details link is not displayed in order to click")
        eyes.check("", Target.window().fully())
        eyes.close_async()
    except Exception as e:
        eyes.abort_async()
        print(e)


def tear_down(web_driver, runner):
    web_driver.quit()
    all_test_results = runner.get_all_test_results(False)
    print(all_test_results)


web_driver = Chrome(ChromeDriverManager().install())
consecutive_runs = 10
runner = VisualGridRunner(consecutive_runs)
eyes = Eyes(runner)
set_up(eyes)

try:
    ultra_fast_test(web_driver, eyes)
finally:
    tear_down(web_driver, runner)
Beispiel #59
0
def get_last_report(browser: webdriver.Chrome, t):
    print('正在获取手机号...')
    browser.get('https://selfreport.shu.edu.cn/PersonInfo.aspx')
    time.sleep(1)

    # 手机号
    ShouJHM = browser.find_element(
        By.ID, 'persinfo_ctl00_ShouJHM-inputEl').get_attribute('value')
    if NEED_BEFORE:
        print('开始补报,正在获取补报日期前一天的填报信息...')
        t = START_DT - dt.timedelta(days=1)
    else:
        print('正在获取前一天的填报信息...')
        t = t - dt.timedelta(days=1)
    browser.get(
        f'https://selfreport.shu.edu.cn/ViewDayReport.aspx?day={t.year}-{t.month}-{t.day}'
    )
    time.sleep(1)

    # 是否在上海,在上海(校内),在上海(不在校内),不在上海
    ShiFSH = browser.find_element(By.CSS_SELECTOR,
                                  '#ctl03_ShiFSH #ctl03_ShiFSH-inputEl').text
    # 是否住校
    ShiFZX = 'f-checked' in browser.find_element(
        By.CSS_SELECTOR,
        '#ctl03_ShiFZX .f-field-checkbox-icon').get_attribute('class')
    # 省
    ddlSheng = browser.find_element(
        By.CSS_SELECTOR,
        '#ctl03_ddlSheng #ctl03_ddlSheng-inputEl').get_attribute('value')
    # 市
    ddlShi = browser.find_element(
        By.CSS_SELECTOR,
        '#ctl03_ddlShi #ctl03_ddlShi-inputEl').get_attribute('value')
    # 县
    ddlXian = browser.find_element(
        By.CSS_SELECTOR,
        '#ctl03_ddlXian #ctl03_ddlXian-inputEl').get_attribute('value')
    # 详细地址
    XiangXDZ = browser.find_element(
        By.CSS_SELECTOR,
        '#ctl03_XiangXDZ #ctl03_XiangXDZ-inputEl').get_attribute('value')
    # 是否家庭地址
    ShiFZJ = 'f-checked' in browser.find_element(
        By.CSS_SELECTOR,
        '#ctl03_ShiFZJ .f-field-checkbox-icon').get_attribute('class')

    return ShouJHM, ShiFSH, ShiFZX, ddlSheng, ddlShi, ddlXian, XiangXDZ, ShiFZJ
import time
from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains


url = "https://demos.devexpress.com/aspxeditorsdemos/ListEditors/MultiSelect.aspx"
chrome_path = '/home/xuananh/Downloads/chromedriver_linux64/chromedriver'
# chrome driver download from link: https://chromedriver.storage.googleapis.com/index.html?path=2.44/

chrome_option = ChromeOptions()
driver = Chrome(executable_path=chrome_path,
                options=chrome_option)
driver.maximize_window()
driver.get(url)

# set select mode to Multiple
driver.find_element_by_id("ControlOptionsTopHolder_lbSelectionMode_B-1").click()
time.sleep(0.5)
driver.find_element_by_id("ControlOptionsTopHolder_lbSelectionMode_DDD_L_LBI1T0").click()
time.sleep(1.5)

# perform Multiple Select
select = driver.find_element_by_id("ContentHolder_lbFeatures_LBT")
options = select.find_elements_by_tag_name("td")

action = ActionChains(driver)

# multi_action = action \
#     .key_down(Keys.CONTROL) \