概述
一、使用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操作元素和文件上传所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复