2024.7.9

88 阅读1分钟

selenium学习

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import threading
import time


def run_in_thread(keyword, thread_id):
    print(f"Thread {thread_id} is running")
    driver = webdriver.Chrome()  # 创建Chrome浏览器实例
    driver.get('https://www.google.com')  # 打开谷歌首页

    search = driver.find_element_by_name('q')  # 找到搜索框元素
    # 除了使用find_element_by_name()方法,还可以使用其他方法,
    # 如find_element_by_xpath()、find_element_by_id()、
    # find_element_by_link_text()、find_element_by_class_name()、find_element_by_css_selector()等
    # driver.find_element(By.NAME, 'q') 通过By类来定位元素
    # driver.find_element_by_xpath('/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input') 通过xpath定位元素
    # driver.find_element_by_id('APjFqb') 通过id定位元素
    # driver.find_element_by_link_text('Google Apps') 通过链接文本定位元素
    #  driver.find_element_by_partial_link_text()link_text('Google Apps') 通过部分链接文本定位元素
    # driver.find_element_by_class_name('gLFyf') 通过 class name定位元素
    # driver.find_element_by_css_selector('input[name="q"]') 通过 css selector定位元素
    # driver.find_element_by_tag_name('div')  # 通过 tag name定位元素,目标元素在html中是唯一标签或者是html标签的首个

    search.send_keys(keyword + Keys.RETURN)  # 在搜索框中输入"selenium python"关键字
    # driver.forward() #模拟浏览器前进操作
    # driver.back()  # 模拟浏览器后退操作
    time.sleep(5)  # 等待5秒
    driver.save_screenshot(f'../ret/{keyword}.png')
    with open(f'../ret/{thread_id}.html', 'w', encoding='utf-8') as f:
        f.write(driver.page_source)  # 保存当前页面的HTML源代码到文件
    print(driver.current_url)  # 打印当前页面的HTML源代码
    print(driver.title)
    driver.quit()


# 创建两个线程,分别执行run_in_thread函数
t1 = threading.Thread(target=run_in_thread, args=('gundam', 1))
t2 = threading.Thread(target=run_in_thread, args=('python', 2))

t1.start()
t2.start()
t1.join()
t2.join()

Chrome开发者模式下元素定位

屏幕截图 2024-07-09 170001.png 点击即可通过定位指定元素,定位对应的原始xpath

pycharm个人常用快捷键

  • alt+←/→ 切换前后标签页
  • clt+alt+←/→ 返回光标前/后一处位置
  • shift+clt+enter 另起一行
  • F1 运行(本人习惯)
  • clt+w 单词扩展选取 能够快速选中一个变量名或是函数名,好用