def download_data(browser_object: webdriver, config_object: configparser.ConfigParser) -> BeautifulSoup: browser_object.get(config_object["rekyl_portal"]["url"]) time.sleep(1) username = browser_object.find_element_by_id("username") password = browser_object.find_element_by_css_selector( "input[type=password") username.send_keys(config_object["rekyl_portal"]["username"]) password.send_keys(config_object["rekyl_portal"]["password"]) browser_object.find_element_by_id("button_login_security_low").click() time.sleep(3) show_errands = Select(browser_object.find_element_by_name("maxhits")) show_errands.select_by_index(10) time.sleep(5) browser_object.find_element_by_name("maxhits").send_keys(Keys.RETURN) time.sleep(5) iframe = browser_object.find_element_by_id("iframe_workorder") browser_object.switch_to.frame(iframe) iframe_source = browser_object.page_source soup = BeautifulSoup(iframe_source, "html.parser") browser_object.close() browser_object.quit() logging.info("Raw data downloaded") return soup
def execSearch(browser: webdriver, inifile): # 検索ワード抽出 browser.get(_get(inifile, 'search', 'url_trend')) contents = browser.find_elements_by_tag_name('h1') searchWords = [] for content in contents: searchWords.append(content.text) searchWords.pop(0) searchWords.pop(0) # ログインボタンの押下(検索、メールDEポイント共通) browser.get(_get(inifile, 'search', 'url') + '/Web?qt=' + searchWords[0]) searchWords.pop(0) browser.find_element_by_link_text(_get(inifile, 'search', 'login_context')).click() login_user = browser.find_element_by_name(_get(inifile, 'user', 'id_name')) login_user.send_keys(_get(inifile, 'user', 'id')) login_password = browser.find_element_by_name( _get(inifile, 'user', 'pass_name')) login_password.send_keys(_get(inifile, 'user', 'pass')) browser.find_element_by_name("submit").click() sleep(_getRandomNum()) ## 検索ワードを一つずつ処理 for index, searchWord in enumerate(searchWords): search_box = browser.find_element_by_name("qt") search_box.clear() search_box.send_keys(searchWord) browser.find_element_by_id('searchBtn').click() sleep(_getRandomNum())
def execLogin(browser: webdriver, inifile): # Googleにアクセス browser.get(_get(inifile, 'init', 'url')) # ログインボタンの押下 browser.find_element_by_link_text(_get(inifile, 'init', 'login_context')).click() sleep(_getRandomNum()) login_user = browser.find_element_by_name(_get(inifile, 'user', 'id_name')) login_user.send_keys(_get(inifile, 'user', 'id')) login_password = browser.find_element_by_name(_get(inifile, 'user', 'pass_name')) login_password.send_keys(_get(inifile, 'user', 'pass')) browser.find_element_by_name("submit").click() sleep(_getRandomNum())
def execSearch(browser: webdriver): """ Googleで検索を実行する :param browser: webdriver """ # スクリーンショットのファイル名用に日付を取得 dt = datetime.datetime.today() dtstr = dt.strftime("%Y%m%d%H%M%S") # get request browser.get("http://www.python.org") # check words int title assert "Python" in browser.title # select input elem elem = browser.find_element_by_name("q") # send key elem.clear() elem.send_keys("pycon") elem.send_keys(Keys.RETURN) # exists results? assert "No results found." not in browser.page_source # brower close (quit: close one tab) browser.close()
def save(self, browser: webdriver): """ """ save_elem = browser.find_element_by_name("save") if save_elem: save_elem.click()
def execSearch(browser: webdriver): """ 京大の課題サイトにアクセスし、未実行の課題を教える。 """ browser.get('https://cas.ecs.kyoto-u.ac.jp/cas/login?service=https%3A%2F%2Fpanda.ecs.kyoto-u.ac.jp%2Fsakai-login-tool%2Fcontainer') sleep(1) #ログイン user_id = browser.find_element_by_name("username") user_id.clear() user_id.send_keys(settings.USN) password = browser.find_element_by_name("password") password.clear() password.send_keys(settings.PWD) login = browser.find_element_by_class_name("btn-submit") login.click() sleep(1) #各科目のページに遷移 base_url = browser.current_url links = { "弾性体の力学解析":"2020-110-3200-000", "流体力学":"2020-110-3165-000", "一般力学":"2020-110-3010-100", "基礎有機化学I":"2020-888-N347-014", "地球環境学のすすめ":"2020-888-Y201-001", "社会基盤デザインI":"2020-110-3181-000", "工業数学B2":"2020-110-3174-000", "確率統計解析及び演習":"2020-110-3003-000", "水文学基礎":"2020-110-3030-000", "地球工学基礎数理":"2020-110-3005-000", } # nav = browser.find_element_by_id("2020-110-3165-000") for subject,link_id in links.items(): unkadai(base_url,subject,link_id)
def execSearch(browser: webdriver): """ Googleで検索を実行する :param browser: webdriver """ # スクリーンショットのファイル名用に日付を取得 dt = datetime.datetime.today() dtstr = dt.strftime("%Y%m%d%H%M%S") # Googleにアクセス browser.get('https://www.google.co.jp/') sleep(1) # キーワードの入力 browser.find_element_by_id('lst-ib').send_keys('docker selenium') # 検索実行 browser.find_element_by_name('btnK').submit() sleep(1) # スクリーンショット browser.save_screenshot('images/' + dtstr + '.png')
def do_login(driver: webdriver, start_date, end_date, property): # Getting Home Page driver.get("https://live.mycloudhospitality.com/Login/Common/Index.aspx") # Disabling Captcha driver.execute_script( '$("#lblHiddenSuppressCaptchaValidation")[0].value = "Y"') # Login and Passsword {FILL IT BEFORE RUNNING} with open('config.json') as f: data = json.load(f) driver.find_element_by_name('txtUserNameEmailId').send_keys( data['username']) driver.find_element_by_name('txtPassword').send_keys(data['password']) #Click Login driver.find_element_by_name('btnLogin').click() wait_short = WebDriverWait(driver, 10) wait_long = WebDriverWait(driver, 400) # Select the Property based on argument passed # element = wait_short.until( # EC.element_to_be_clickable((By.ID, f"dgChangeProperty_btnOpenChangeProperty_{property}")) # ) # element.click() element = wait_short.until(EC.element_to_be_clickable((By.ID, "imgCPMS"))) element.click() element = wait_short.until( EC.element_to_be_clickable((By.ID, "btnReportsWelcome"))) element.click() element = wait_short.until( EC.element_to_be_clickable((By.ID, "txtSearchReports"))) element.send_keys('Guest Transaction') element = wait_short.until( EC.element_to_be_clickable((By.ID, "btnSearchReports"))) element.click() wait_short.until(EC.invisibility_of_element((By.ID, "overlayProcess"))) element = wait_short.until( EC.presence_of_element_located( (By.XPATH, '//*[@id="dgReportsList"]/tbody/tr[3]/td[4]'))) element.click() wait_short.until(EC.element_to_be_clickable((By.ID, "cmbDatefrom"))) # Passing in start and end date based on parameters given # print(start_date, end_date) driver.execute_script(f'$("#cmbDatefrom")[0].value = "{start_date}"') driver.execute_script(f'$("#cmbDateto")[0].value = "{end_date}"') element = wait_short.until( EC.element_to_be_clickable((By.ID, "btnOkReports"))) element.click() # wait_short.until( # EC.invisibility_of_element((By.ID, "overlayProcess")) # ) wait_long.until(EC.invisibility_of_element((By.ID, "overlayProcess"))) #End of Loop time.sleep(5) return
def execSearch(assignBrowser: webdriver): dateString = datetime.datetime.today().strftime("%Y%m%d%H%M%S") # Open the browser with assign URL assignBrowser.get('https://google.com') # Input keyword in search field search_box = assignBrowser.find_element_by_name("q") search_box.send_keys('WilliamTai.moe') # Submit search search_box.submit() # Take screenshot and save to local disk assignBrowser.save_screenshot('./tmp/selenium_screenshot/' + dateString + '.png')
def login_github(browser: webdriver): browser.find_element_by_name("login").send_keys(USERNAME) sleep(1) browser.find_element_by_name("password").send_keys(PASSWORD) sleep(1) browser.find_element_by_name("commit").send_keys( Keys.ENTER) # Same as Line 43. # browser.find_element_by_name("commit").click() sleep( 30 ) # Input GitHub Verification Code Within 30 Seconds, or You Can Delete this Line.
def work_wos_citations_request(browser: webdriver, title: str): url = ScholarURLType.BASE.value + ScholarURLType.SEARCH.value.replace( '<title>', title).replace('"', '\\"') wait() browser.execute_script(f"""window.open("{url}","_blank");""") # request WebDriverWait(browser, 10).until(EC.number_of_windows_to_be(2)) requestmeter.count() browser.switch_to.window( browser.window_handles[1]) # changes to the new tab WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.NAME, 'q'))) search_box = browser.find_element_by_name('q') # gets the search box search_box.send_keys(title) # puts the query search_box.submit() # send the request WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.NAME, 'q'))) return BeautifulSoup(browser.page_source, 'html.parser')
def logIn(driver: webdriver, user_id: str, password: str): driver.get("https://classroom.google.com/u/0/h") while (True): driver.find_element_by_id("identifierId").send_keys(user_id) driver.find_element_by_id("identifierNext").click() time.sleep(3) if len(driver.find_elements_by_name("password")) > 0: break try: temp = driver.find_element_by_id("identifierId").get_attribute( "outerHTML") temp = temp[temp.index("aria-invalid") + 14] if temp == 't': user_id = input("Invalid mail-id. \nPlease enter mail-id:") driver.find_element_by_id("identifierId").clear() else: print( "Kindly try again. One of the following reasons may be possible for the error:\n1. No internet connection\n2. You have 2-factor authentication enabled for your mail account" ) driver.get("https://classroom.google.com/u/0/h") time.sleep(3) if '0/h' in driver.current_url: return True return False except: print( "Kindly try again. One of the following reasons may be possible for the error:\n1. No internet connection\n2. You have 2-factor authentication enabled for your mail account" ) driver.get("https://classroom.google.com/u/0/h") time.sleep(3) if '0/h' in driver.current_url: return True return False while (True): WebDriverWait(driver, timeout=10).until( expected_conditions.visibility_of_element_located( (By.NAME, "password"))).send_keys(password) driver.find_element_by_id("passwordNext").click() time.sleep(3) if '0/h' in driver.current_url: return True try: temp = driver.find_element_by_id("password").get_attribute( "outerHTML") temp = temp[temp.index("aria-invalid") + 14] if temp == 't': password = getpass.getpass( prompt='Invalid password. Please enter your password: '******'0/h' in driver.current_url: return True return False except: if '0/h' in driver.current_url: return True driver.get("https://classroom.google.com/u/0/h") time.sleep(3) if '0/h' in driver.current_url: return True print( "Kindly try again. One of the following reasons may be possible for the error:\n1. No internet connection\n2. You have 2-factor authentication enabled for your mail account" ) return False
def find_password_element(driver: webdriver): return driver.find_element_by_name('param3')
def find_login_element(driver: webdriver): return driver.find_element_by_name('param1')
def google_search(driver: webdriver, search_word: str): search_area = driver.find_element_by_name("q") search_area.clear() search_area.send_keys(search_word) search_area.submit()
def CLR_Html(browser: webdriver, Name: str) -> str: """ a = CLR_Html(self.b, ['page_name', 'profile_message_send', 'profile_action_btn', 'profile_msg_split']) print(a) :param Name: :param browser: :return: """ res = [] all_res = [] # a = Soport_webdriver.CLR_Html(b,['mail_box_send']) for name in Name: try: all_res.append(browser.find_element_by_id(name).text) res.append('find_element_by_id') except: pass try: all_res.append(browser.find_element_by_name(name).text) res.append('find_element_by_name') except: pass try: all_res.append(browser.find_element_by_xpath(name).text) res.append('find_element_by_xpath') except: pass try: all_res.append(browser.find_element_by_link_text(name).text) res.append('find_element_by_link_text') except: pass try: all_res.append( browser.find_element_by_partial_link_text(name).text) res.append('find_element_by_partial_link_text') except: pass try: all_res.append(browser.find_element_by_tag_name(name).text) res.append('find_element_by_tag_name') except: pass try: all_res.append(browser.find_element_by_class_name(name).text) res.append('find_element_by_class_name') except: pass try: all_res.append(browser.find_element_by_css_selector(name).text) res.append('find_element_by_css_selector') except: pass io = '' for x in range(len(res)): io += '{} |-| {} |-| {}\n'.format(str(Name[x]), str(res[x]), str(all_res[x])) return io