我是靠谱客的博主 拼搏钢笔,最近开发中收集的这篇文章主要介绍selenium(三)使用js操作元素和文件上传,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、使用js操作页面元素

1.使用js脚本,操作日期控件

"""
js操作
execute_script
"""

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


driver=webdriver.Chrome()
driver.get("https://www.12306.cn/index/")
time.sleep(2)
#只读日期控件元素
el_data=driver.find_element(By.ID,"train_date")
#去掉readonly属性‐‐‐》通过js操作元素driver.execute_script()
#arguments 把execute_script后面的第二个或者第三个或者到第n个参数到放在argum
ents
js="var el=arguments[0];el.removeAttribute('readonly');"
#执行js脚本,去掉readonly属性
driver.execute_script(js,el_data)
#清除日期控件默认值
el_data.clear()
time.sleep(2)
#日期控件输入设置的日期
el_data.send_keys('2021‐10‐01')
print("时间控件设置的日期:",el_data.get_attribute("value"))

2.使用js脚本,操作滚动条

"""
滚动条操作
"""
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver=webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.find_element(By.ID,"kw").send_keys("selenium webdriver")
driver.find_element(By.ID,"su").click()
loc=(By.XPATH,"//div[@id='7']/h3/a")
#显示等待 presence_of_element_located不一定元素可见,只要存在即可
WebDriverWait(driver,15).until(EC.presence_of_element_located(loc))
el2=driver.find_element(*loc)
time.sleep(2)
#el2.click()
#实现滚动条从顶部到底部
driver.execute_script("scrollTo(0,document.body.scrollHeight)")
time.sleep(2)
#实现滚动条从浏览器底部到顶部
driver.execute_script("scrollTo(document.body.scrollHeight,0)")
time.sleep(2)
#操作哪个元素,滚动条移动到元素附近(元素与页面的顶部对齐,元素与页面的底部对齐)
js2="arguments[0].scrollIntoView(false);"
driver.execute_script(js2,el2)
time.sleep(2)

二、文件上传

1.直接输入

from selenium.webdriver.common.by import By
from selenium import webdriver
driver=webdriver.Chrome()
driver.get("xxxxx")
el_file=driver.find_element(By.ID,"f1")
el_file.send_keys(“文件地址”)

2.不可以直接输入,只能选择

#如何定位windows窗口及窗口的元素?
#环境准备
#1、定位工具(失败window窗口及元素)‐‐‐winSpy
#2、第三方库 pywin3
#安装: pip install pywin3
#切换源 pip install ‐i https://pypi.douban.com/simple pywin3
#如何定位windows窗口及窗口的元素?
#文件上传输入框: #32770‐ComboBoxEx32 ‐ComboBox ‐Edit
#打开按钮:#32770‐Button
import win32gui
import win32con

driver=webdriver.Chrome()
driver.get("xxxxx")
time.sleep(4)
el_file=driver.find_element(By.ID,"f1")
ActionChains(driver).move_to_element(el_file).click().perform()
def upload(filePath,browser_type="Chrome"):
	if browser_type == "Chrome":
		title = "打开"
	else:
		title = "文件上传"
#32770‐ComboBoxEx32 ‐ComboBox ‐Edit
	dialog = win32gui.FindWindow("#32770",title) #一级窗口 ‘打开窗口’
	#二级
	ComboBoxEx32 =  win32gui.FindWindowEx(dialog,0,"ComboBoxEx32",None) 
	#三级
	ComboBox =win32gui.FindWindowEx(ComboBoxEx32,0,"ComboBox",None) 
	#四级
	edit = win32gui.FindWindowEx(ComboBox,0,"Edit",None) 
#32770‐Button
	button = win32gui.FindWindowEx(dialog,0,"Button",None) #四级
	#往文件名编辑框中输入文件路径
	#上传操作
	win32gui.SendMessage(edit,win32con.WM_SETTEXT,None,filePath)
	#点击打开按钮
	win32gui.SendMessage(dialog,win32con.WM_COMMAND,1,button) 

filepath="文件地址"
time.sleep(5)
upload(filePath=filepath)
print("文件上传成功")
time.sleep(10)

最后

以上就是拼搏钢笔为你收集整理的selenium(三)使用js操作元素和文件上传的全部内容,希望文章能够帮你解决selenium(三)使用js操作元素和文件上传所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部