我需要将我的图像转换为base64字符串,以便我可以将我的图像发送到服务器.这个有没有js文件......?否则如何转换它
我知道Internet上图像的URL.
例如http://www.digimouth.com/news/media/2011/09/google-logo.jpg,其中包含Google的徽标.
现在,如何使用Python下载此图像,而无需在浏览器中实际打开URL并手动保存文件.
我正在使用Selenium编写一些UI测试,并且使用Dojo工具包,我有一个JavaScript Tree控件.
我已经使用Dojo提供的示例为树的每个节点实现了一个上下文菜单,但是我需要Selenium测试来"调用"树节点上的右键单击,但我无法使其工作.测试只是不通过JavaScript模拟右键单击事件,并且上下文菜单不会显示.
有没有人有任何使用Dojo和Selenium在上下文菜单上调用右键的经验?或者对如何做到这一点有任何想法?
我想从浏览器获取验证码图像.我有这个图片的网址,但这张图片更改了每个更新的时间(网址是不变的).
是否有任何解决方案从浏览器获取图片(如"将图片另存为"按钮)?
从另一方面,我认为它应该是工作:
动态capcha - link的链接
问题通过截图解决:
browser.save_screenshot('screenshot.png')
img = browser.find_element_by_xpath('//*[@id="cryptogram"]')
loc = img.location
image = cv.LoadImage('screenshot.png', True)
out = cv.CreateImage((150,60), image.depth, 3)
cv.SetImageROI(image, (loc['x'],loc['y'],150,60))
cv.Resize(image, out)
cv.SaveImage('out.jpg', out)
Run Code Online (Sandbox Code Playgroud)
谢谢
我对Selenium和JavaScript回调函数还很陌生,但有一个大问题我无法解决。我需要使用JavaScript的指定变量。如果我使用GoogleChrome打开页面并使用控制台输入我的JavaScript代码,则可以使用类似以下内容的变量:
1. var myId;
2. getSomeIdStuffInfo("somestuff",function(docId)(myId = docId));
3. return myId;
Run Code Online (Sandbox Code Playgroud)
如果我逐步输入此行,则很容易获得正确的值myId。但是,当然,如果我尽可能快地执行这三行,我将获得null作为返回值,因为当我返回myId时回调函数并未完成。SOOOO ..如果我像这样使用硒:
JavascriptExecutor js = (JavascriptExecutor) driver;
String docInfoVal = (String) js.executeScript("" +
"var myId; " +
"getCurrentDocumentInfo(\"somestuff\"," +
"function(docId) {" +
"myId = docId;" +
"}" +
");" +
"return myId;");
Run Code Online (Sandbox Code Playgroud)
我只会得到null作为结果。所以...以某种方式我必须“等待”回调函数,直到我返回myId。我必须使用executeAsyncScript吗?我坐在上面几个小时,尝试了不同的方法,但是我找不到答案。
在此先感谢您的帮助!
我正在尝试使用 Python 中的 Selenium Webdriver 从 URL 下载图像。该站点受登录页面保护,因此不能仅使用请求保存 URL 内容。登录后我可以从站点获取文本,但我不知道如何保存图像。
登录该站点后,我可以执行此操作,browser.save_screenshot(filename + '.png')但该图像与原始图像的大小不正确。
我现在拥有的代码是这样的:
browser = webdriver.Chrome('../chromedriver')
browser.get('www.example.com/login')
# send username and password, click submit
browser.get('www.example.com/123')
html = browser.page_source
printData(html)
# this url is an image file
browser.get('www.example.com/get_photo.php?id=123')
browser.save_screenshot(filename + '.png')
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想用类似的save_screenshot()东西替换
with open(filename + '.jpeg', 'w') as img:
img.write(browser.download_current_image())
Run Code Online (Sandbox Code Playgroud)
甚至像这样的东西,与弹出菜单交互
browser.right_click()
browser.down_arrow_key()
browser.return_key()
Run Code Online (Sandbox Code Playgroud)
或模拟按键
browser.command_key()
browser.s_key()
Run Code Online (Sandbox Code Playgroud)
这个问题给出了我想要的答案,但不适用于 Python。如果有办法在 Python 中执行该问题中建议的任何操作(除了截屏),那将是一个很好的解决方案。
使用web.whatsapp.de时,可以看到收到的图片的链接可能如下所示:
blob:https://web.whatsapp.com/3565e574-b363-4aca-85cd-2d84aa715c39
Run Code Online (Sandbox Code Playgroud)
如果将链接复制到地址窗口,它将打开图像,但是 - 如果省略"blob" - 它将只打开一个新的web whatsapp窗口.
我正在尝试下载此链接显示的图像.
但是使用常见的技术,例如使用request,urllib.request甚至BeautifulSoup总是在某一点上挣扎:url开头的"blob"会抛出错误.
这些答案使用Python从Blob URL下载文件 将显示错误
URLError: <urlopen error unknown url type: blob>
Run Code Online (Sandbox Code Playgroud)
或错误
InvalidSchema: No connection adapters were found for 'blob:https://web.whatsapp.com/f50eac63-6a7f-48a4-a2b8-8558a9ffe015'
Run Code Online (Sandbox Code Playgroud)
(使用BeatufilSoup)
使用原生方法,如:
import requests
url = 'https://web.whatsapp.com/f50eac63-6a7f-48a4-a2b8-8558a9ffe015'
fileName = 'test.png'
req = requests.get(url)
file = open(fileName, 'wb')
for chunk in req.iter_content(100000):
file.write(chunk)
file.close()
Run Code Online (Sandbox Code Playgroud)
只会导致与使用BeautifulSoup相同的错误.
我在Python中使用Selenium控制Chrome,但是我无法使用提供的链接正确下载图像.
selenium ×5
javascript ×4
python ×4
asynchronous ×1
base64 ×1
callback ×1
dojo ×1
firefox ×1
function ×1
mouseevent ×1
url ×1
web-scraping ×1
whatsapp ×1