Exemplo n.º 1
0
def Restart_Modem():
    options = EdgeOptions()
    options.use_chromium = True
    options.add_argument("-inprivate")
    edge_browser = Edge(options=options)
    edge_browser.get('http://192.168.0.1')
    time.sleep(2)
    print('Welcome')
    try:
        login = edge_browser.find_element_by_name('username')
        password = edge_browser.find_element_by_name('password')
        sign = edge_browser.find_element_by_class_name('styled_button_s')
        login.clear()
        password.clear()
        login.send_keys('admin')
        password.send_keys('admin')
        time.sleep(2)
        sign.click()
        print('Sign in')
        alert = Alert(edge_browser)
        time.sleep(2)
        edge_browser.get('http://192.168.0.1/saveconf.htm')
        time.sleep(2)
        system = edge_browser.find_element_by_id('three_level_menu1')
        system.click()
        time.sleep(2)
        reboot = edge_browser.find_element_by_name('reboot')
        reboot.click()
        alert.accept()
        time.sleep(70)
        print('Reboot')
        edge_browser.quit()
    except:
        print('Problem with restarting modem')
        edge_browser.quit()
Exemplo n.º 2
0
def run():
    email = read_decrypt(efile)
    password = read_decrypt(pfile)
    cemail = str(email)
    cpassword = str(password)
    print(cemail)
    print(cpassword)
    with open("browserdetails.txt", "r") as f:
        data = [line.rstrip('\n') for line in f]
    browser = data[0].lower()
    gpu = data[1].lower()

    if browser == 'edge':
        try:
            requests.get("http://www.google.com")
            print('Connection Found')
            options = EdgeOptions()
            options.use_chromium = True
            options.add_argument("--start-maximized")
            if gpu == 'no':
                options.add_argument("window-size=1920,1080")
                options.add_argument("--headless")
                options.add_argument("disable-gpu")
                options.add_argument("-inprivate")
            driver = Edge(executable_path='msedgedriver.exe', options=options)
            driver.get('https://gokano.com/')
            try:
                email = WebDriverWait(driver, 3).until(
                    EC.presence_of_element_located((By.NAME, 'email')))
                print("Page is ready!")
                email.send_keys(cemail)
                password = driver.find_element_by_name('password')
                password.send_keys(cpassword)
                time.sleep(3)
                button = driver.find_element_by_class_name('submit')
                button.click()
                print('Login sucessful')
            except TimeoutException:
                print("Error logining in")  #[email protected]
                time.sleep(3)
                driver.quit()
            time.sleep(3)
            try:
                cdp = driver.find_element_by_link_text('Collect daily points')
                cdp.click()
                write_time()
                time.sleep(3)
                driver.quit()
            except NoSuchElementException:
                print('Already collected')
                time.sleep(3)
                driver.quit()
            print('Automation completed')
            time.sleep(3)
            driver.quit()
        except requests.ConnectionError:
            print('Could not connect')
Exemplo n.º 3
0
    def Webpage_login(self,scanner_url, username, password):
        """edge浏览器"""
        edgedriver = "./msedgedriver.exe" #这里写本地的edgedriver的所在路径
        edge_options = EdgeOptions()
        edge_options.use_chromium = True # 使用谷歌内核
        edge_options.add_argument("disable-gpu") # 禁用gpu加速,避免bug
        edge_options.add_argument('start-maximized') # 启动最大化
        edge_options.add_argument('--ignore-certificate-errors') # 绕过“你的连接不是专用连接”
        edge_options.add_experimental_option('useAutomationExtension', False) # 关闭“Microsoft Edge正由自动测试软件控制。”
        edge_options.add_experimental_option('excludeSwitches', ['enable-automation'])
        driver = Edge(executable_path=edgedriver,options=edge_options)

        driver.get(scanner_url)
        
        time.sleep(1)
        driver.find_element_by_id('username').click()
        driver.find_element_by_id('username').send_keys(username)
        driver.find_element_by_id('password').click()
        driver.find_element_by_id('password').send_keys(password)
        driver.find_element_by_class_name('submit').click()
        time.sleep(1)
        driver.find_element_by_id('two01').click()
class AddAToDoText(unittest.TestCase):
    def setUp(self):
        options = EdgeOptions()
        options.use_chromium = True
        options.binary_location = "C:\\Program Files (x86)\\Microsoft\\Edge Dev\\Application\\msedge.exe"
        dir = os.path.dirname(os.path.realpath(__file__))
        edge_driver_path = dir + "\\edgedriver_win64\\msedgedriver.exe"
        self.driver = Edge(options=options, executable_path=edge_driver_path)
        self.driver.implicitly_wait(30)
        self.driver.maximize_window()
        self.driver.get("http://*****:*****@class='toggle']/following-sibling::label").get_attribute("innerText")
        self.assertEqual("The test is adding this todo", addedToDoText)

    def tearDown(self):
        self.driver.quit()
Exemplo n.º 5
0
def wa_login(isHeadless=True):
    '''
    Use to login to Whatsapp Web
    
    Can omit usage if already logged in once by scanning QR

    Parameters
    ----------
    None

    Returns
    -------
    None
    '''
    options = EdgeOptions()
    options.use_chromium = True     #Uses chromium-based edgium, remove to use legacy edge
    options.add_argument("user-data-dir="+os.getcwd()+"\\Cache")
    options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.49")
    options.add_experimental_option('excludeSwitches', ['enable-logging'])
    # options.add_experimental_option("excludeSwitches", ["enable-automation"])
    # options.add_experimental_option("useAutomationExtension", False)
    options.headless = isHeadless   #Headless mode
    global driver
    driver = Edge(EdgeChromiumDriverManager().install(),options=options)
    driver.get('https://web.whatsapp.com/')
    if os.path.isfile('./Cache/wa.exists'):
        return
    else:
        pass
    wait_for_load('_1PTz1')
    driver.execute_script("""
    var element1 = document.querySelector("._3DgtU");
    var element2 = document.querySelector("._1iKcN");
    if (element1)
        element1.parentNode.removeChild(element1);
    if (element2)
        element2.parentNode.removeChild(element2);
    """)
    Image.open(BytesIO(driver.find_element_by_class_name('landing-main').screenshot_as_png)).show()
    with open('Cache/wa.exists','w') as file:
        pass
Exemplo n.º 6
0
class QCourse:
    def __init__(self):
        # 初始化options
        self.prefs = {"download.default_directory": os.getcwd()}
        self.options = EdgeOptions()
        self.options.use_chromium = True
        self.options.add_argument("log-level=3")
        self.options.add_experimental_option('excludeSwitches',
                                             ['enable-logging'])
        self.options.add_experimental_option('prefs', self.prefs)
        self.options.add_argument("--mute-audio")

        self.login_url = 'https://ke.qq.com/'

        # Mac 下配置 options 报错,故扔掉了。如果是 Windows,请使用路径下面的 msedgedriver.exe。(注释掉下面一行,放开下下行)
        self.driver = Edge(executable_path=os.path.join(
            BASE_DIR, 'msedgedriver'),
                           capabilities={})
        # self.driver = Edge(executable_path='msedgedriver.exe', options=self.options)

        # self.driver = Edge(executable_path=os.path.join(BASE_DIR, 'msedgedriver'), capabilities=desired_cap, options=self.options)

    def login(self):
        self.driver.get('https://ke.qq.com/')
        self.driver.find_element_by_id('js_login').click()
        time.sleep(1)

        WebDriverWait(self.driver, 300).until_not(
            EC.presence_of_element_located((By.CLASS_NAME, 'ptlogin-mask')))

        dictCookies = self.driver.get_cookies()
        jsonCookies = json.dumps(dictCookies)
        with open('cookies.json', 'w') as f:
            f.write(jsonCookies)
        print('登陆成功!')

    def close(self):
        self.driver.close()

    def _get_video(self, video_url=None, path=None, index=None):
        if not video_url:
            print('请输入视频url!')
        # 跳转一次没法跳转,可能是设置了preventDefault
        self.driver.get(video_url)
        self.driver.get(video_url)
        try:
            # 等待视频开始播放
            WebDriverWait(self.driver, 60).until(
                EC.presence_of_element_located((By.CLASS_NAME, 'loki-time')))
            WebDriverWait(
                self.driver,
                60).until_not(lambda driver: driver.find_element_by_class_name(
                    'loki-time').get_attribute("innerHTML") == '00:00 / 00:00')

            title = self.driver.title
            if index is not None:
                title = "{:02}_{}".format(index, title)

            networks = self.driver.execute_script(
                'return window.performance.getEntries()')
            ts_url = key_url = ''
            for network in networks:
                if '.ts?start' in network.get('name'):
                    ts_url = network.get('name')
                elif 'get_dk' in network.get('name'):
                    key_url = network.get('name')
            download_single(ts_url, key_url, title, path)
        except TimeoutException:
            # 如果超时,可能是下载的资料,则查看是否有下载按钮,有的话,就下载
            title = self.driver.title
            try:
                down_btn = self.driver.find_element_by_class_name(
                    'download-btn')
                if down_btn.text == '下载资料':
                    url = down_btn.get_attribute('href')
                    download_zip_doc(url, title, path)
            except Exception:
                print('没有找到视频,也没有找到可下载的文件,可能是还未开课')

    def get_video(self, video_url=None, path=None, index=None):
        if isinstance(video_url, list):
            for url in video_url:
                if url:
                    self._get_video(url, path, index)
        else:
            self._get_video(video_url, path, index)

    def load_cookies(self):
        if not os.path.exists('cookies.json'):
            self.login()
        with open('cookies.json', 'r') as f:
            listCookies = json.loads(f.read())
        self.driver.get(self.login_url)
        for cookie in listCookies:
            self.driver.add_cookie({
                'domain': '.ke.qq.com',
                'httpOnly': cookie['httpOnly'],
                'name': cookie['name'],
                'path': '/',
                'secure': cookie['secure'],
                'value': cookie['value']
            })
        for cookie in utils.get_cookies_dic_list():
            self.driver.add_cookie({
                'domain': '.ke.qq.com',
                'httpOnly': False,
                'name': cookie[0],
                'path': '/',
                'secure': False,
                'value': cookie[1]
            })
Exemplo n.º 7
0
def run():
    email = read_decrypt(efile)
    password = read_decrypt(pfile)
    cemail = str(email)
    cpassword = str(password)
    with open("browserdetails.txt", "r") as f:
        data = [line.rstrip('\n') for line in f]
    browser = data[0].lower()
    gpu = data[1].lower()

    if browser == 'edge':
        try:
            requests.get("http://www.google.com")
            print('Connection Established.')
            l1 = tk.Label(top, text=" Connection Established. ", bg='white')
            l1.config(font=('helvetica', 15, "bold"))
            canvas.create_window(200, 410, window=l1)
            options = EdgeOptions()
            options.use_chromium = True
            options.add_argument("--start-maximized")
            if gpu == 'no':
                options.add_argument("window-size=1920,1080")
                options.add_argument("--headless")
                options.add_argument("disable-gpu")
                options.add_argument("-inprivate")
            driver = Edge(resource_path('msedgedriver.exe'), options=options)
            driver.get('https://gokano.com/')
            try:
                email = WebDriverWait(driver, 3).until(
                    EC.presence_of_element_located((By.NAME, 'email')))
                print("Page is ready!")
                l1 = tk.Label(top,
                              text="           Page is Ready.           ",
                              bg='white')
                l1.config(font=('helvetica', 15, "bold"))
                canvas.create_window(200, 410, window=l1)
                email.send_keys(cemail)
                password = driver.find_element_by_name('password')
                password.send_keys(cpassword)
                time.sleep(3)
                button = driver.find_element_by_class_name('submit')
                button.click()
                try:
                    driver.find_element_by_class_name('gokan-alert-error')
                    print("Invalid Credintials")
                    l1 = tk.Label(top,
                                  text=" Invalid Credintials. ",
                                  bg='white')
                    l1.config(font=('helvetica', 15, "bold"))
                    canvas.create_window(200, 410, window=l1)
                    time.sleep(3)
                    driver.quit()
                except NoSuchElementException:
                    print('Login sucessful')
                    l1 = tk.Label(top, text=" Login Successful. ", bg='white')
                    l1.config(font=('helvetica', 15, "bold"))
                    canvas.create_window(200, 410, window=l1)
            except TimeoutException:
                print("Login Error!")
                l1 = tk.Label(top, text=" Login Error! ", bg='white')
                l1.config(font=('helvetica', 15, "bold"))
                canvas.create_window(200, 410, window=l1)
                # [email protected]
                time.sleep(3)
                driver.quit()
            time.sleep(3)
            try:
                cdp = driver.find_element_by_link_text('Collect daily points')
                cdp.click()
                write_time()
                time.sleep(3)
                driver.quit()
            except NoSuchElementException:
                print('Already collected')
                l1 = tk.Label(top,
                              text=" Points Already Collected. ",
                              bg='white')
                l1.config(font=('helvetica', 15, "bold"))
                canvas.create_window(200, 410, window=l1)
                time.sleep(3)
                driver.quit()
            print('Automation completed')
            l1 = tk.Label(top, text=" Automation Completed. ", bg='white')
            l1.config(font=('helvetica', 15, "bold"))
            canvas.create_window(200, 410, window=l1)
            time.sleep(3)
            write_time()
            driver.quit()
        except requests.ConnectionError:
            print('Could not connect')
            l1 = tk.Label(top, text=" Couldn't Connect. ", bg='white')
            l1.config(font=('helvetica', 15, "bold"))
            canvas.create_window(200, 410, window=l1)
            driver.quit()
Exemplo n.º 8
0
class Web_scraping:
    def __init__(self):
        '''Initialize the application'''
        #As using the standard webdriver was giving warnings and messing up the terminal, I used the code below to show just what I want.
        self.opt = EdgeOptions()
        self.opt.add_experimental_option('excludeSwitches', ['enable-logging'])
        self.opt.add_argument("--start-maximized")
        self.opt.use_chromium = True
        self.driver = Edge(
            executable_path=
            r"C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedgedriver.exe",
            options=self.opt)

    def games_link(self):
        '''Create a list with all season event's link and then create another list with all event's link'''
        #Creating list with the all season's link
        self.season_pages_list = []
        for y in range(2008, 2022):
            #Creating the seasons links as str and adding it to a list
            self.season_link = 'https://www.worldsurfleague.com/events/' + str(
                y) + '/mct?all=1'
            self.season_pages_list.append(self.season_link)

        #Creating a list with the all event's link from each season
        self.events_link_list = []
        for link in self.season_pages_list:
            self.driver.get(link)
            #Getting all the events links as selenium format
            self.event_links = self.driver.find_elements_by_xpath(
                '//a[@class="event-schedule-details__event-name"]')
            #Finding the class status completed is needed once it's possible to stop the process on it.
            self.event_status = self.driver.find_elements_by_xpath(
                '//span[@class="event-status event-status--completed"]')

            #Creating event's link list
            for i in range(0, len(self.event_status)):
                #Getting the links for each event as a str format
                self.link_attribute = self.event_links[i].get_attribute('href')
                self.events_link_list.append(self.link_attribute)

        with open('events.txt', 'w') as f:
            for item in self.events_link_list:
                f.write("%s\n" % item)

        print('FINISHED')

    #Getting data inside which event
    def event_stats(self):
        #TXT file with all events link to list
        self.events_link = [
            line[0]
            for line in pd.read_fwf('events.txt', header=None).values.tolist()
        ]

        #for link in self.events_link:
        self.driver.get(self.events_link[0])

        #list of all heats
        self.all_heats_lists = []

        while True:
            #Gets all the waves scores, athletes, nationalities and heats on the page as list.
            self.waves = self.driver.find_elements_by_xpath(
                '//*[@class="score"]')
            self.athletes = self.driver.find_elements_by_xpath(
                '//*[@class="athlete-name"]')
            self.nationalities = self.driver.find_elements_by_xpath(
                '//*[@class="athlete-country-flag"]')
            self.heat = self.driver.find_elements_by_xpath(
                '//*[@class="new-heat-hd-name"]')

            #Gets the round name
            self.round = self.driver.find_elements_by_xpath(
                '//*[@class="carousel-item is-selected"]')
            if len(self.round) == 0:
                self.round = self.driver.find_elements_by_xpath(
                    '//*[@class="carousel-item last is-selected"]')

            #Gets the number of surfers and heats on the round, such as the avg surfers per heat (must be 2 or 3)
            self.number_of_surfers = int(len(self.waves) / 18)

            #As the final round only has 1 heat, the find_element_by_class_name gets a 'WebDriver' element and not a list
            self.number_of_heats = len(self.heat)

            self.surfers_per_heat = int(self.number_of_surfers /
                                        self.number_of_heats)

            #there's a count to deduct 1 stage and gets the round name for each round.
            self.count = 0
            #Gets the stats for each heat
            self.heat_data = []
            for g in range(0, self.number_of_heats):
                #Page stats
                #Event stats
                self.event_turn = self.driver.find_element_by_class_name(
                    'event-meta-tour-info').text.split()[2][1:]
                self.event_period = self.driver.find_element_by_class_name(
                    'event-schedule__date-range').text
                self.event_name = self.driver.find_element_by_class_name(
                    'event-title').text.split('\n')[0]
                self.event_local = re.split(
                    r'(\d+)',
                    self.driver.find_element_by_class_name(
                        'event-meta-tour-info').text)[2]
                self.avg_wave_score = re.split(
                    r'(\d+\.\d+)',
                    self.driver.find_element_by_class_name(
                        'new-heat-hd-status').text)[1]

                #Heat's id for the database
                self.heat_id = (f'heat{g + 1}' + self.round[0].text +
                                self.event_turn +
                                self.event_period[-4:]).lower()

                #Surfer stats

                self.surfer1 = self.athletes[g * 2].text
                self.surfer1_nat = self.nationalities[g *
                                                      2].get_attribute('title')

                self.surfer1_best_w1 = self.waves[g * 18 + (1 - 1)].text
                self.surfer1_best_w2 = self.waves[g * 18 + (2 - 1)].text
                self.surfer1_total = self.waves[g * 18 + (3 - 1)].text
                self.surfer1_w01 = self.waves[g * 18 + (4 - 1)].text
                self.surfer1_w02 = self.waves[g * 18 + (5 - 1)].text
                self.surfer1_w03 = self.waves[g * 18 + (6 - 1)].text
                self.surfer1_w04 = self.waves[g * 18 + (7 - 1)].text
                self.surfer1_w05 = self.waves[g * 18 + (8 - 1)].text
                self.surfer1_w06 = self.waves[g * 18 + (9 - 1)].text
                self.surfer1_w07 = self.waves[g * 18 + (10 - 1)].text
                self.surfer1_w08 = self.waves[g * 18 + (11 - 1)].text
                self.surfer1_w09 = self.waves[g * 18 + (12 - 1)].text
                self.surfer1_w10 = self.waves[g * 18 + (13 - 1)].text
                self.surfer1_w11 = self.waves[g * 18 + (14 - 1)].text
                self.surfer1_w12 = self.waves[g * 18 + (15 - 1)].text
                self.surfer1_w13 = self.waves[g * 18 + (16 - 1)].text
                self.surfer1_w14 = self.waves[g * 18 + (17 - 1)].text
                self.surfer1_w15 = self.waves[g * 18 + (18 - 1)].text

                #Surfer 2 stats
                self.surfer2 = self.athletes[g * 2 + 1].text
                self.surfer2_nat = self.nationalities[g * 2 +
                                                      1].get_attribute('title')

                self.surfer2_best_w1 = self.waves[g * 18 + (19 - 1)].text
                self.surfer2_best_w2 = self.waves[g * 18 + (20 - 1)].text
                self.surfer2_total = self.waves[g * 18 + (21 - 1)].text
                self.surfer2_w01 = self.waves[g * 18 + (22 - 1)].text
                self.surfer2_w02 = self.waves[g * 18 + (23 - 1)].text
                self.surfer2_w03 = self.waves[g * 18 + (24 - 1)].text
                self.surfer2_w04 = self.waves[g * 18 + (25 - 1)].text
                self.surfer2_w05 = self.waves[g * 18 + (26 - 1)].text
                self.surfer2_w06 = self.waves[g * 18 + (27 - 1)].text
                self.surfer2_w07 = self.waves[g * 18 + (28 - 1)].text
                self.surfer2_w08 = self.waves[g * 18 + (29 - 1)].text
                self.surfer2_w09 = self.waves[g * 18 + (30 - 1)].text
                self.surfer2_w10 = self.waves[g * 18 + (31 - 1)].text
                self.surfer2_w11 = self.waves[g * 18 + (32 - 1)].text
                self.surfer2_w12 = self.waves[g * 18 + (33 - 1)].text
                self.surfer2_w13 = self.waves[g * 18 + (34 - 1)].text
                self.surfer2_w14 = self.waves[g * 18 + (35 - 1)].text
                self.surfer2_w15 = self.waves[g * 18 + (36 - 1)].text

                #Inputing all variables into the heat_data list
                self.heat_data.append(self.heat_id)
                self.heat_data.append(self.event_name)
                self.heat_data.append(self.event_local)
                self.heat_data.append(self.event_turn)
                self.heat_data.append(self.event_period)
                self.heat_data.append(self.avg_wave_score)
                self.heat_data.append(self.surfer1)
                self.heat_data.append(self.surfer1_nat)
                self.heat_data.append(self.surfer1_best_w1)
                self.heat_data.append(self.surfer1_best_w2)
                self.heat_data.append(self.surfer1_total)
                self.heat_data.append(self.surfer1_w01)
                self.heat_data.append(self.surfer1_w02)
                self.heat_data.append(self.surfer1_w03)
                self.heat_data.append(self.surfer1_w04)
                self.heat_data.append(self.surfer1_w05)
                self.heat_data.append(self.surfer1_w06)
                self.heat_data.append(self.surfer1_w07)
                self.heat_data.append(self.surfer1_w08)
                self.heat_data.append(self.surfer1_w09)
                self.heat_data.append(self.surfer1_w10)
                self.heat_data.append(self.surfer1_w11)
                self.heat_data.append(self.surfer1_w12)
                self.heat_data.append(self.surfer1_w13)
                self.heat_data.append(self.surfer1_w14)
                self.heat_data.append(self.surfer1_w15)
                self.heat_data.append(self.surfer2)
                self.heat_data.append(self.surfer2_nat)
                self.heat_data.append(self.surfer2_best_w1)
                self.heat_data.append(self.surfer2_best_w2)
                self.heat_data.append(self.surfer2_total)
                self.heat_data.append(self.surfer2_w01)
                self.heat_data.append(self.surfer2_w02)
                self.heat_data.append(self.surfer2_w03)
                self.heat_data.append(self.surfer2_w04)
                self.heat_data.append(self.surfer2_w05)
                self.heat_data.append(self.surfer2_w06)
                self.heat_data.append(self.surfer2_w07)
                self.heat_data.append(self.surfer2_w08)
                self.heat_data.append(self.surfer2_w09)
                self.heat_data.append(self.surfer2_w10)
                self.heat_data.append(self.surfer2_w11)
                self.heat_data.append(self.surfer2_w12)
                self.heat_data.append(self.surfer2_w13)
                self.heat_data.append(self.surfer2_w14)
                self.heat_data.append(self.surfer2_w15)
                self.all_heats_lists.append(self.heat_data.copy())
                self.heat_data.clear()

            #Click on the previous round botton
            print(self.all_heats_lists)
            try:
                self.prev_round_bt = self.driver.find_element_by_xpath(
                    '//*[@class="flickity-button-icon"]').click()
            except:
                self.prev_round_bt = self.driver.find_element_by_xpath(
                    '//*[@class="flickity-button-icon"]')
                self.driver.execute_script("arguments[0].scrollIntoView();",
                                           self.prev_round_bt)
                time.sleep(.5)
                self.prev_round_bt.click()
            time.sleep(2.5)
Exemplo n.º 9
0
from msedge.selenium_tools import options
from msedge.selenium_tools import Edge, EdgeOptions
from time import sleep

options = EdgeOptions()
options.use_chromium = True
driver = Edge(options=options)
options.add_experimental_option("excludeSwitches", ['enable-automation'])

kodSekolah = "NEB2054"

driver.get(
    "https://docs.google.com/forms/d/e/1FAIpQLSduotkz5L48QN_vXksFCerIfHF4ihDQyxlARbL4BneSeqzNWg/viewform"
)
print("Google sites opened")
sleep(0.5)

KodSekolah_box = driver.find_element_by_class_name(
    "quantumWizTextinputPaperinputEl")
KodSekolah_box.send_keys(kodSekolah)
sleep(0.2)