我正在使用4.2.1版创建一个CKEditor插件.我试图按照简单插件上的教程.但是,对话框窗口中的文本输入在对话框中不可编辑/可点击,即使我只是从教程中复制整个abbr插件而没有任何更改.
我仍然可以单击对话框选项卡,确定/取消按钮,然后拖动对话框.我已经在我的自定义版本中添加了其他元素(如选择)到对话框,我可以与这些元素进行交互.
当我检查Chrome的开发工具中的文本输入元素时,我可以通过Console/jQuery添加文本并显示.我在控制台中没有失败.
$('#cke_229_textInput').val('help');
Run Code Online (Sandbox Code Playgroud)
将文本添加到文本输入并在屏幕上显示.但我无法通过鼠标/键盘/浏览器与元素进行交互.我错过了CKEditor配置中有哪些明显的东西?对不起,如果这是一个非常愚蠢的问题 - 第一次使用CKEditor.我还搜索了CKEditor论坛和Google,没有发现任何相关问题.
这在Chrome 30和FF 24中都会发生.
我打电话来创建编辑器:
var me = document.getElementById('resource_editor_raw');
editor = CKEDITOR.replace(me, {
fullPage: true,
removePlugins: 'newpage,forms,templates',
extraPlugins: 'abbr',
allowedContent: true
});
Run Code Online (Sandbox Code Playgroud)
感谢您的任何提示或提示!
考虑到这可能是相关的,我还尝试使用Chrome的开发工具将文本元素的z-index设置得非常高.没有运气,它仍然不可编辑/突出......
这似乎是与jQuery UI的冲突.建议的修复程序对我来说还不起作用,但是它会四处乱窜...让任何可能偶然发现它的人都会这样做.
所以Brian的小费对我有所帮助.Bootbox模式背景(我用来生成原始对话框)和CKEditor对话框背景都有tabindex = -1,因此它们会以某种方式发生冲突.手动关闭Bootbox背景(即设置tabindex ='')与Chrome开发工具一起使用,所以我想我可以和jQuery或其他东西一起破解.惊人的东西......感谢您的帮助!! 不知道为什么我在jsFiddle中工作...如果我没记错,我可能没有在这些对话框上有背景.
另外,作为参考,tabindex为-1使得事物无法实现,这对于背景来说是有意义的.
我正在使用Python 2.7.5,Django 1.7,请求2.4.1,并进行一些简单的测试.但是,似乎当我调用requests.post时,该方法正在执行GET.
我的代码,与RESTful API交谈.请注意,POST命令通过Hurl.it与此有效负载和端点一起工作:
def add_dummy_objective(self):
"""
To the bank
"""
payload = {
'displayName': {
'text': self._test_objective
},
'description': {
'text': 'For testing of API Middleman'
},
'genusTypeId': 'DEFAULT'
}
obj_url = self.host + self.bank_id + '/objectives/?proxyname=' + self._admin_key
req = requests.post(obj_url, data=json.dumps(payload), headers=self.headers)
return req.json()
Run Code Online (Sandbox Code Playgroud)
我将标题设置为json:
self.headers = {
'Content-Type' : 'application/json'
}
Run Code Online (Sandbox Code Playgroud)
我没有创建一个新目标(正如预期的那样使用POST),而是获得了目标列表(我对GET的期望).使用pdb,我看到:
(Pdb) req.request
<PreparedRequest [GET]>
(Pdb) req.request.method
'GET'
Run Code Online (Sandbox Code Playgroud)
这怎么翻了?我之前使用过Python请求库没有任何问题,所以我不确定我是否遗漏了一些明显的东西或者是否(使用较新版本的Django/Requests)我必须设置另一个参数?这是一个缓存问题吗?任何调试技巧?我已经尝试重新安装请求,并将Django回滚到1.6.5,但没有任何作用......必须简单. - 谢谢!
======更新1 ========
只需合并Martijn在此提出的一些调试信息:
(Pdb) requests.post.__name__
'post'
Run Code Online (Sandbox Code Playgroud)
进入requests/api.py> post()定义:
(Pdb) l
88 :param data: …Run Code Online (Sandbox Code Playgroud) 使用Jenkins的http请求插件的v1.8.10(我正在运行1.643),现在支持在请求中POST一个正文 - 所以这个线程不适用.我想知道如何在Pipeline(v2.1)Groovy脚本中使用此功能?片段生成器不包括这个新字段,所以我没有建立的例子.
我已经尝试了各种方法将JSON数据放入请求体,但我的Tomcat服务器始终返回http 400状态代码: The request sent by the client was syntactically incorrect.
我尝试过的事情:
def toJson = {
input ->
groovy.json.JsonOutput.toJson(input)
}
def body = [
displayName: [
text: "smoke test"],
description: [
text: "for smoke testing"],
genusTypeId: "type"
]
response = httpRequest consoleLogResponseBody: true, contentType: 'APPLICATION_JSON', httpMode: 'POST', requestBody: toJson(body), url: "https://${host}", validResponseCodes: '200'
Run Code Online (Sandbox Code Playgroud)
def body = [
displayName: [
text: "smoke test"],
description: [
text: "for smoke testing"],
genusTypeId: "type"
]
response = httpRequest consoleLogResponseBody: …Run Code Online (Sandbox Code Playgroud) groovy http-request jenkins jenkins-plugins jenkins-pipeline
我对这件事感到非常难过,而且必须做一些非常愚蠢的事情.我想在Django项目上上传一个文件.问题似乎是没有表单数据传递到服务器 - 只有csrf令牌.我在Mac上运行Django 1.5.1,python 2.7,virtualenv,并使用内置的Django开发服务器.
我的HTML表单是:
{% load url from future %}
<form enctype="multipart/form-data" method="POST" action="{% url 'showreport' %}">
{% csrf_token %}
<label>Upload grade csv file: </label>
<input type="hidden" id="testing" value="maybe" />
<input type="file" id="grade_csv" />
<input type="submit" value="Generate Report" />
</form>
Run Code Online (Sandbox Code Playgroud)
我的模特:
from django.db import models
class Document(models.Model):
file = models.FileField(upload_to='/media/', blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
我的forms.py:
from django import forms
from .models import Document
class DocumentForm(forms.Form):
"""
to handle uploading grades csv file
"""
class Meta:
models = Document
Run Code Online (Sandbox Code Playgroud)
我的views.py:
def …Run Code Online (Sandbox Code Playgroud) 我试图在几年前找到谷歌Selenium论坛上发布的这个问题的解决方案(我发现最相似的东西......遗憾的是在论坛中没有发布回答).在我的Selenium测试(Python绑定)中,如何点击Highcharts数据系列来触发onClick事件?我试图为条形图做这个,但任何例子都可行.手动这是有效的.当我点击数据系列时,会弹出一个新的div,其中包含有关该数据系列的其他信息,我想使用Selenium验证此操作.我可以使用ActionChains来显示系列工具提示,但由于某些原因,在Selenium中似乎没有触发click()事件.
我试图点击类'highcharts-series'的元素,这些元素的子元素和整个父元素'highcharts-series-group'.我所取得的最大进步是点击该系列的儿童作品,因为我可以看到工具提示弹出(见截图).但没有点击动作 - Selenium超时等待下一步.

一个原因可能是因为Highcharts组容器(highcharts-series-group)的zIndex高于我想要点击的元素(3对0.1).但是点击整个组什么也没做,在真实的浏览器中,我相信我点击了一个实际的系列,而不是组容器 - 所以我认为因为它在真正的浏览器中工作,所以zIndex不应该影响我的点击?您可以在第二个屏幕截图中看到所有这些系列在svg元素中的排列方式.

这就是我现在尝试点击的方式.我在这个SO问题的解决方案中构建了这个:
parent = self.browser.find_element_by_id('student_chart')
data_series = parent.find_elements_by_class_name('highcharts-series')
data_rect = data_series[0].find_element_by_tag_name('rect')
builder = ActionChains(self.browser)
series_click = builder.click(data_rect)
series_click.perform()
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
所以这看起来很完美,但是如果我使用for循环点击每个系列,最后一个"take"并且会发生预期的onClick事件.但是,当我手动测试时,点击任何单个系列都可以.触发最后一个系列的代码是:
parent = self.browser.find_element_by_id('student_chart')
data_series = parent.find_elements_by_class_name('highcharts-series')
for series in data_series:
rect = series.find_element_by_tag_name('rect')
if rect.text == '':
rect.click()
Run Code Online (Sandbox Code Playgroud)
这似乎是一个完全的黑客只是为了让我的测试工作,所以我想知道是否有人知道为什么点击单个元素不起作用的根本原因,或更简洁的方法来做到这一点?
谢谢!
所以我查看了Robbie在下面的回答中指出的库,它似乎使用ActionChains来构建与HighCharts的交互.该库很酷,显然适用于其他人,但作者似乎只能跟踪鼠标悬停事件...当我尝试下面代码的不同变体进行点击事件时,我只能显示工具提示 - 没有点击事件.所以我似乎仍然卡住了.ActionChains似乎可以正常使用Selenium从HighCharts中读取工具提示和值,但点击事件对我来说仍然是一个谜......
parent = self.browser.find_element_by_id('student_chart')
data_series = parent.find_elements_by_class_name('highcharts-series')
series_number = 0
for series in data_series:
if series_number == 0:
click_object = series.find_element_by_tag_name('rect')
else:
pass
series_number += 1 …Run Code Online (Sandbox Code Playgroud) 我正在尝试在使用South的Django项目(1.5.4)上运行Selenium测试.当我尝试用夹具注入初始数据时,我认为South与我的测试相冲突,但我不确定为什么; 我感谢任何帮助.
根据Django 文档,应该在第一个syncdb之后加载fixture,然后应用所有迁移.
问题1)这是否考虑到南迁?我需要以某种方式单独运行它们吗?
我运行测试时得到的错误使我看起来在第一次测试后我的南迁移仍然存在于测试数据库中...但我认为每个测试都有自己的数据库(和迁移/固定装置)?第一个测试通过/失败,但每个后续测试都会引发此IntegrityError:
IntegrityError: Problem installing fixture '<PROJECT_PATH>/fixtures/toy_course.json': Could not load contenttypes.ContentType(pk=8): (1062, "Duplicate entry 'south-migrationhistory' for key 'app_label'")
Run Code Online (Sandbox Code Playgroud)
这个南方文档和SO问题似乎表明我需要覆盖某种类型的前向方法才能使夹具工作,但我不完全确定如何将其应用于测试情况而不是生产(或者如果是我需要的解决方案).
问题2)我是否应该在测试设置中覆盖前进?我会在哪里做的?
我的相关测试代码:
from django.conf import settings
from selenium import webdriver
from functional_tests.test import SeleniumTestCase
class Resources(SeleniumTestCase):
fixtures = ['toy_course.json']
def setUp(self):
self.browser = webdriver.Chrome(settings.SELENIUM_WEBDRIVER)
self.browser.implicitly_wait(3)
def tearDown(self):
self.browser.quit()
def test_main_page_renders_correctly(self):
"""
User sees a properly formatted main page
"""
self.open('/RDB/')
h3_headers = self.browser.find_elements_by_tag_name('h3')
self.assertIn(
'Complete List of Resources', …Run Code Online (Sandbox Code Playgroud) 我想知道如何在ReactNative RC中导入/使用/测试新组件?具体来说,我想导入并使用0.27.0-rc1中的SwipeableRow 组件.有一次,我可以将其导入,我可以在代码库,了解PARAMS和选项挖过来,但我甚至无法让过去的一步......import
我通过安装了正确的标记版本npm,但是当我尝试导入组件时,它们显示为undefined:
import {
ListView,
ScrollView,
StyleSheet,
SwipeableListView,
Text,
TouchableHighlight,
View
} from 'react-native';
Run Code Online (Sandbox Code Playgroud)
我得到的错误如下:
渲染代码(触发上述代码):
render() {
var ds = new SwipeableListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
blah blah blah
}
Run Code Online (Sandbox Code Playgroud)
我也尝试将SwipeableRow文件夹移动为子文件Libraries(而不是Libraries- > Experimental- > SwipeableRow,现在它是Libraries- > SwipeableRow).同样的错误.
我已尝试导入Experimental然后使用<Experimental.SwipeableRow.SwipeableListView>,但这也会抛出"未定义不是对象"异常.
正如所建议的那样,我也尝试使用直接路径到节点模块进行导入:
import {
SwipeableListView
} from '../../../node_modules/react-native/Libraries/Experimental/SwipeableRow';
Run Code Online (Sandbox Code Playgroud)
结果导致:
Unable to resolve module ../../../node_modules/react-native/Libraries/Experimental/SwipeableRow …Run Code Online (Sandbox Code Playgroud) 我试图让一个jQuery选择/下拉列表在Bootbox模式中工作.我在标准HTML页面上的代码几乎完全相同,所以我认为只需将列表弹出一个模态即可.我生成我的div并在模态中选择对象,然后在"显示"之后,我调用Chosen:
div.on("shown", function() {
$(".chzn-select").chosen();
$(".chzn-select-deselect").chosen({allow_single_deselect:true});
myApp.init();
});
Run Code Online (Sandbox Code Playgroud)
在此之后,Chosen似乎被打破了.选择项目显示为灰色 - 我无法单击它们.
在myApp.init()中,我填充了选择项,它可以工作.

在模态的幕后,我可以看到Chosen容器似乎已初始化,但它没有将select选项传递给chzn-drop div.在图像中,chzn-results UL应该填充选项.这是模态版本:
从HTML版本开始,它应该是什么样子:

在HTML版本中,我的代码位于body标签的底部(类似地,选择选项填充在myApp.init()中),它似乎工作得很好.通话顺序似乎相同......
$(".chzn-select").chosen(); $(".chzn-select-deselect").chosen({allow_single_deselect:true});
$(document).ready(function(){
myApp.init();
});
Run Code Online (Sandbox Code Playgroud)
这不仅仅是z-index的问题 - 我已经玩过没有运气了.似乎在模态中,Chosen插件以某种方式变得混乱而不是绑定或更新,即使它已经正确初始化.我不确定如何对其进行故障排除,也找不到其他有相同问题的人...这让我觉得这可能是一个时间问题(但为什么它在HTML中有用?),或者我做的事情很愚蠢(高度可能).有没有人有任何关于在哪里看或有什么问题的建议?
谢谢!
============================
对于这两个版本,我使用以下代码填充select(myApp.init()中编辑的版本):
$.ajax call to a RESTful URL
var callbackSuccess = function(data){
if ( data ) {
populateDropDownById(data, 'objectiveBanks');
//Other things
}
};
function populateDropDownById(data, elementId) {
$('#' + elementId).append('<option value = "null"> -- Select -- </option>');
$.each( data, function( id, bean ) {
var name = bean.displayName.text;
var id = bean.id;
$('#' …Run Code Online (Sandbox Code Playgroud) twitter-bootstrap jquery-chosen drop-down-menu bootstrap-modal bootbox
我正在尝试为Pub/Sub类型的应用程序创建一个通用的Python类,其中模型定义为我们拥有的每种类型的资源X指定了三种方法:
new_X
changed_X
deleted_X
Run Code Online (Sandbox Code Playgroud)
我已经将代码抽象为单个方法,它接受有关类型和操作的参数:
def _pub_wrapper(self, verb, obj_type, id_list):
ids = [str(i) for i in id_list]
self._pub(ids, '{0}.{1}'.format(verb,
obj_type.lower()))
Run Code Online (Sandbox Code Playgroud)
但这需要我手工编写每个定义的方法,尽管在一行中,每个方法:
def new_resources(self, id_list):
self._pub_wrapper('new', 'resources', id_list)
def changed_resources(self, id_list):
self._pub_wrapper('changed', 'resources', id_list)
Run Code Online (Sandbox Code Playgroud)
我试图找到一个更好的模式,进一步抽象,这样我就不必手写这些单行方法了.因为方法名称映射到我的pub/sub系统中的动词/类型,所以我想的是(伪代码可以遵循):
def __getattr__(self, item):
if name in [whitelist of approved methods]:
return ??? Some sort of partially defined version of self._pub_wrapper, with verb and obj_type filled in from parsing item ???
raise AttributeError()
Run Code Online (Sandbox Code Playgroud)
这种通用方法理想情况下会捕获如下调用:
publisher.new_resources([])
publisher.new_items([])
publisher.new_banks([])
Run Code Online (Sandbox Code Playgroud)
没有我必须手动编码这些方法...有一个优雅的方法来做到这一点?我想也许我可以用装饰器来做__getattr__,但不太确定如何返回一个装饰方法.尝试以下,但self._pub_wrapper()从未调用过该方法.
def define_verb_and_type(*args, **kwargs):
def wrap(func): …Run Code Online (Sandbox Code Playgroud) 我正在使用 PyInstaller 3.2 来打包 Web.py 应用程序。通常,使用 Web.py 和内置的 WSGI服务器,您可以在命令行上指定端口,例如
$ python main.py 8091
Run Code Online (Sandbox Code Playgroud)
将在端口 8091(默认为 8080)上运行 Web.py 应用程序。我通过规范文件将应用程序与 PyInstaller 捆绑在一起,但我不知道如何用它指定端口号——传入 Options 似乎只适用于 docs 中给定的 3 个。我试过:
exe = EXE(pyz,
a.scripts,
[('8091', None, 'OPTION')],
a.binaries,
a.zipfiles,
a.datas,
name='main',
debug=False,
strip=False,
upx=True,
console=False )
Run Code Online (Sandbox Code Playgroud)
但这似乎没有任何作用。我在文档中没有看到任何其他内容——是否有另一种方法可以将命令行参数捆绑/指定/包含到 PyInstaller 规范文件中?
django ×3
python ×3
selenium ×2
bootbox ×1
ckeditor ×1
django-forms ×1
django-south ×1
facebook ×1
file ×1
forms ×1
groovy ×1
highcharts ×1
html ×1
http-request ×1
jenkins ×1
plugins ×1
pyinstaller ×1
python-2.7 ×1
react-native ×1
svg ×1
unit-testing ×1
web.py ×1