首页 > 其他分享 >from selenium import webdriver

from selenium import webdriver

时间:2024-05-28 18:32:48浏览次数:26  
标签:webdriver selenium driver element import find

url = 'https://chat18.aichatos8.com'
chrome_binary_path = '/Users/baidu/project/script/chromedriver/chrome-mac-arm64/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing'
chromedriver_path = '/Users/baidu/project/script/chromedriver/chromedriver-mac-arm64/chromedriver'

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
options = webdriver.ChromeOptions()
options.binary_location = chrome_binary_path
options.add_argument('--enable-logging')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
# options.add_argument('window-size=1920x3000') #指定浏览器分辨率
options.add_argument('--disable-gpu') #谷歌文档提到需要加上这个属性来规避bug
options.add_argument('--hide-scrollbars') #隐藏滚动条, 应对一些特殊页面
# options.add_argument('blink-settings=imagesEnabled=false') #不加载图片, 提升速度
# options.add_argument('--headless') #浏览器不提供可视化页面

driver = webdriver.Chrome(options=options)
driver.service.path = chromedriver_path
# driver.get(url)
# driver.implicitly_wait(10)
# performance_log = driver.execute_script("return window.performance.getEntries();")
# for entry in performance_log:
# print(entry)


# # 获取性能日志
# # logs = driver.get_log('client')
# # for entry in logs:
# # message = entry['message']
# # if '"method":' in message:
# # request = message.split('"params":')[1]
# # print(request)

# # 退出WebDriver实例
# driver.quit()

 


# -*- coding: utf-8 -*-
from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

# driver = Chrome('C:\Program Files\Google\Chrome\Application\chromedriver.exe')
#
# driver.get('https://www.66law.cn/')
# search = driver.findElement(By.CLASS_NAME,"stairway")

# _webdriver = driver.find_element(By.ID, "value")
# _webdriver = driver.find_element(By.CLASS_NAME, "value")
# _webdriver = driver.find_element(By.NAME, "value")
# _webdriver = driver.find_element(By.TAG_NAME, "value")
# _webdriver = driver.find_element(By.XPATH, "value")
# # _webdriver = driver.find_element_by_css_selector("value") # 利用CSS选择器查找
# _webdriver = driver.find_element(By.CSS_SELETOR, "value")
# _webdriver = driver.find_element(By.ID, "su").click()

# _webdriver.send_keys('电脑')
# _webdriver.send_keys(Keys.key)

# 刷新, 后退, 前进
# _webdriver.refresh()
# _webdriver.back()
# _webdriver.forward()

# # 切换选项卡
# driver.switch_to.window(driver.window_handles[0])
# time.sleep(2)
# driver.switch_to.window(driver.window_handles[1])
# driver.get(url)
# driver.quit()

# 登录163邮箱
# driver.get('https://mail.163.com/')
# frame = driver.find_element(By.CSS_SELECTOR, "#loginDiv>iframe")
# driver.switch_to.frame(frame)
# user_name = driver.find_element(By.CSS_SELECTOR,'.j-inputtext.dlemail.j-nameforslide')
# user_name.send_keys('asuphy')
# password = driver.find_element(By.CSS_SELECTOR,'.j-inputtext.dlpwd')
# password.send_keys('woxihuanni0')
# enter = driver.find_element(By.CSS_SELECTOR,'#dologin')
# enter.click()

# driver.switch_to.frame("输入网页的id或者name")
# # /从子frame切回到父frame
# driver.switch_to.parent_frame()

 

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains

def get_tracks(distance):
"""
拿到移动轨迹,模仿人的滑动行为,先匀加速后匀减速
匀变速运动基本公式:
①v = v0+at
②s = v0t+1/2at^2
"""
#初速度
v = 0
#单位时间为0.3s来统计轨迹,轨迹即0.3内的位移
t = 0.31
#位置/轨迹列表,列表内的一个元素代表0.3s的位移
tracks = []
#当前位移
current = 0
#到达mid值开始减速
mid = distance*4/5
while current < distance:
if current < mid:
#加速度越小,单位时间内的位移越小,模拟的轨迹就越多越详细
a = 2
else:
a = -3
#初速度
v0 = v
#0.3秒内的位移
s = v0*t+0.5*a*(t**2)
#当前的位置
current += s
#添加到轨迹列表
tracks.append(round(s))
#速度已经到达v,该速度作为下次的初速度
v = v0+a*t
return tracks


driver.get("http://www.douban.com/")

#切换到登陆框架中来
driver.switch_to.frame(driver.find_elements(By.TAG_NAME, "iframe")[0])
driver.implicitly_wait(2)
driver.find_element(By.CLASS_NAME, "account-tab-account").click()

# 输入账号密码
input1 = driver.find_element(By.ID, "username")
input1.clear() #清空输入框默认内容
input1.send_keys("账号")
input2 = driver.find_element(By.ID, "password")
input2.clear()
input2.send_keys("密码")

#登陆点击
driver.find_element(By.CLASS_NAME, "btn-account").click()
driver.implicitly_wait(5)
#如果定位节点在标签iframe内,那么则必须使用switch_to进行iframe的切换
driver.switch_to.frame(driver.find_element(By.ID, "tcaptcha_iframe"))

#按住开始滑动位置按钮-先移动180个像素
element = driver.find_elements(By.XPATH, '//div[@id="tcaptcha_drag_thumb"]')[0]
driver.implicitly_wait(2)
ActionChains(driver).move_to_element(element).click_and_hold(element).perform()
# move_to_element_with_offset()移动到距离某个元素左上角多少距离的位置
ActionChains(driver).move_to_element_with_offset(to_element=element,xoffset=180,yoffset=0).perform()

#使用加速度函数移动剩下的距离
tracks = get_tracks(26)
for track in tracks: #开始移动move_by_offset()
ActionChains(driver).move_by_offset(xoffset=track,yoffset=0).perform()

#延迟释放鼠标:release()
driver.implicitly_wait(2)
ActionChains(driver).release().perform()

driver.implicitly_wait(10)
# driver.get_cookies()
# 生成登陆后快照
# driver.save_screenshot("douban.png")
# # 保存源码
# with open("douban.html", "w", encoding='utf-8') as file:
# file.write(driver.page_source)
driver.quit()

标签:webdriver,selenium,driver,element,import,find
From: https://www.cnblogs.com/Asuphy/p/18218631

相关文章

  • OpenQA.Selenium.WebDriverException The HTTP request to the remote WebDriver serv
    OpenQA.Selenium.WebDriverException:“TheHTTPrequesttotheremoteWebDriverserverforURLhttp://localhost:xxxx/sessiontimedoutafter60seconds.”1.在谷歌浏览器上加上中括号中的内容[--remote-debugging-port=9222]2.使用管理员模式打开谷歌浏览器3.重新生成......
  • 【2023全网最全最火】Selenium WebDriver教程(建议收藏)
    在本教程中,我将向您介绍SeleniumWebdriver,它是当今市场上使用最广泛的自动化测试框架。它是开源的,可与所有著名的编程语言(如Java、Python、C#、Ruby、Perl等)一起使用,以实现浏览器活动的自动化。通过本文,我将告诉您开始使用SeleniumWebDriver测试Web应用程序所需了解的所有信......
  • 基于Selenium+webdriver对Web应用系统进行功能测试
    以Java格式的脚本,在JUnit框架上执行和调试这些脚本。项目语言与架构选项为在pom.xml中添加的依赖在kotlin目录中添加Java类,开始编写测试代码:找到chrome的版本并下载对应版本的chromedriver,在setProperty中将chromedriver.exe的路径完善后就可以开始测试。chromedriver全版......
  • react eslint import { useUserStore } from "@/stores/user"; 找不到模块“@/stores/
    报错解释:这个报错通常意味着React项目中的ESLint配置不能正确识别@别名指向的目录。在JavaScript模块中,通常使用@作为特定包的别名,例如@/stores/user可能是一个指向特定stores/user模块的别名。ESLint用于代码质量和代码风格的检查,当它不能正确解析这个别名时,就会报出“找不到模......
  • selenium安装教程python
    安装Selenium的步骤主要包括准备Python环境、安装Selenium、安装浏览器驱动以及验证安装。准备Python环境:访问Python官网并下载适合你操作系统的Python版本。安装Python,并确保在安装过程中将Python添加到环境变量中,以便在命令行中运行Python命令。安装完成后,在命令行中输......
  • vue3插件(unplugin-auto-import自动引入的使用)
    1. vite.config文件里面1importAutoImportfrom'unplugin-auto-import/vite'23plugins:[4.......,5AutoImport({6include:[7/\.[tj]sx?$/,//.ts,.tsx,.js,.jsx8/\.vue$/,9/\.vue\?......
  • Windows10 子系统 WSL 位置迁移问题_wsl --import 未指定的错误
    CSDN搬家失败,手动导出markdown后再导入博客园最近想体验下世界上最好的Linux发行版Win10(bushi),拿来深度学习炼丹,所以参考了在WSL2中使用CUDA提到的方法安装。列举下遇到的问题:1Windows预览版本没响应按理说在设置-更新和安全-Windows预览体验计划里面注册后,就......
  • from tensorflow.examples.tutorials.mnist import input_data时input_data报错
    参考链接——https://blog.csdn.net/weixin_42390287/article/details/115635732 报错 ——解决方法去https://github.com/tensorflow/tensorflow下载压缩包 解压,找到input_data.py后复制到一个新建的空文件夹里将这个文件夹放到python项目中,代码中对input_......
  • [plugin:vite:import-analysis] Failed to resolve import "qs" from "src/utils/tang
    [plugin:vite:import-analysis]Failedtoresolveimport"qs"from"src/utils/tangRequest.ts".Doesthefileexist?这个报错是由Vite插件产生的,提示无法从指定路径 src/utils/ 解析导入 qs。qs 是一个常用的查询字符串解析库,通常用于处理URL的查询参数。可能的原......
  • selenium4中cookie的保存与读取
    selenium4中网页cookie的保存与读取importjsonfromseleniumimportwebdriverdriver=webdriver.Edge()url='https://baidu.com'driver.get(url)保存当前网页的cookiedefsavecks():cookies=driver.get_cookies()jscookies=json.dumps(cookies)......