Skip to content

Commit

Permalink
s3: big-data: 20231123-selenium
Browse files Browse the repository at this point in the history
  • Loading branch information
pan93412 committed Nov 26, 2023
1 parent bc17c41 commit bd6d7f8
Show file tree
Hide file tree
Showing 8 changed files with 131 additions and 0 deletions.
8 changes: 8 additions & 0 deletions semester-3/big-data/20231123-selenium/.idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions semester-3/big-data/20231123-selenium/.idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions semester-3/big-data/20231123-selenium/.idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions semester-3/big-data/20231123-selenium/.idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

37 changes: 37 additions & 0 deletions semester-3/big-data/20231123-selenium/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import random

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager

options = Options()
options.add_experimental_option("detach", True)
options.page_load_strategy = 'eager'

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
driver.get("https://www.google.com")
driver.implicitly_wait(5)

original_window = driver.current_window_handle

# select the search bar with aria-label '搜尋'
search_bar_el = driver.find_element(By.CSS_SELECTOR, "textarea[aria-label='搜尋']")
search_bar_el.send_keys("Selenium")
search_bar_el.submit()

# open new tabs for every result
result_els = driver.find_elements(By.CSS_SELECTOR, "[jsname=UWckNb]")
random.shuffle(result_els) # prevent being detected
result_tabs = []
for result_el in result_els:
result_title = result_el.find_element(By.CSS_SELECTOR, "h3").text
print("RESULT", result_title)

# open new tab
result_url = result_el.get_attribute("href")
driver.switch_to.new_window(result_title)
driver.get(result_url)
result_tabs.append(driver.current_window_handle)
driver.switch_to.window(original_window)
51 changes: 51 additions & 0 deletions semester-3/big-data/20231123-selenium/practice-1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import argparse
import logging
import time

import loguru
from loguru import logger
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager

parser = argparse.ArgumentParser()
parser.add_argument("--headless", action="store_true")
parser.add_argument("--wait", type=int, default=5)
args = parser.parse_args()

options = Options()
logger.debug("init: setting eager mode")
options.page_load_strategy = 'eager'

# background
if args.headless:
logger.info("arg: headless mode enabled")
options.add_argument('--headless')

logger.debug("init: setting webdriver")
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
logger.debug("init: setting implicit wait to 5 seconds")
driver.implicitly_wait(5)

logger.debug("op: open page")
driver.get("https://ic.nkust.edu.tw")

logger.info("info: name: {}", driver.name)
logger.info("info: title: {}", driver.title)
logger.info("info: current_url: {}", driver.current_url)
logger.info("info: session_id: {}", driver.session_id)
logger.info("info: capabilities: {}", driver.capabilities)
logger.info("info: src: {}", driver.page_source.replace('\n', '')[:400])

logger.debug("op: move window to (10, 10)")
driver.set_window_position(10, 10)

logger.debug("op: resize window to 500x500")
driver.set_window_size(500, 500)

logger.debug("op: wait for {} seconds", args.wait)
time.sleep(args.wait)

logging.debug("op: bye!")
driver.quit()

0 comments on commit bd6d7f8

Please sign in to comment.