情况就是这样:
现在是我的问题,我能以某种方式找到每个找到的元素的唯一标识符吗?我的目标是通过使用Xpath或CSS选择器与Selenium获得相同的元素.因此,如果我能为jQuery中的元素生成一个明确的选择器,那将是最直接的.其他想法也是受欢迎的.
我需要一种自动方法来识别jQuery中的元素,这些元素可以"转换"为Selenium元素/定位器.
/编辑
为了更清楚:
如果我在jQuery中选择了一个元素:
webDriver.executeScript("var element = $('#myDiv input.test')");
Run Code Online (Sandbox Code Playgroud)
现在,我想要这样的事情:
WebElement webElement = webDriver.executeScript("return element");
Run Code Online (Sandbox Code Playgroud)
那可能吗?
在网页上是带有点击和/或按键处理程序的元素。如果我添加一个新的,它将在它们之后执行。我需要一种方法来添加一个新的回调,它被添加到事件处理程序列表中,以便预先执行。jQuery 怎么可能呢?
更新
为什么我不能只使用 jQuery 的 unbind 方法?我正在将我的 jQuery 代码注入任何网页,因此我不知道是否使用了任何 JavaScript 框架以及使用了哪个 JavaScript 框架。我需要一种通用的方法来检测事件处理程序并预先添加我的。(在您提问之前,我正在构建一个“记录器”应用程序,用于跟踪用户操作以存储它们并在以后执行它们。)
更新 2
我只使用 Firefox,不需要兼容 IE。我必须等待页面完全加载,然后我的 jQuery 脚本将被调用。
我有一个带有文本字段的模型,需要进行版本控制.
class Book(models.Model):
title = models.CharField(max_length=100)
summary = models.TextField()
Run Code Online (Sandbox Code Playgroud)
预期的行为如下:
summary应对字段进行版本控制,而不是整个模型我该怎么办?
我可能需要一些帮助来设计我的模型及其关系.
每个标签可用于Book的多个实例(例如"指环王"和"Discworld"都有"Fantasy"标签).
每个Aspect可以在Tag的多个实例中使用(例如"Fantasy"和"Scifi"都具有"World Detail"方面).
这是一个描述性图像:

(哇,这些都很大)
因为我想存储与特定书籍相关的每个方面的用户评级.
这是主要问题.我想在Django中对此进行建模,这是我到目前为止所得到的:
class Book(models.Model):
title = models.CharField(max_length=100, unique=True)
tags = ManyToManyField(Tag)
# the following line is a workaround...
aspects = models.ManyToManyField(Aspect, through='BookAspect')
class Tag(models.Model):
name = models.CharField(max_length=100)
aspects = models.ManyToManyField(Aspect)
class Aspect(models.Model):
name = models.CharField(max_length=100)
# this class is a workaround ...
class BookAspect(models.Model):
book = models.ForeignKey(Book)
aspect = models.ForeignKey(Aspect)
# this is from django-ratings
rating = …Run Code Online (Sandbox Code Playgroud) 我有一个包含表格的bootstrap模态窗口.如果用户提交表单,则通过Ajax进行验证.如果有任何错误,它会显示在模态中的表单上方(不重新加载页面).
因此,我需要一种方法来在内容更改时调整模式的大小.有任何想法吗?
你能告诉我 svg 标签是否可以设置复杂的参数吗?
对于css来说,有calc()命令,例如:
width: calc (50% - 10px);
Run Code Online (Sandbox Code Playgroud)
svg 是否有类似的东西,例如:
<circle r = 'calc (50% - 2px)'>
Run Code Online (Sandbox Code Playgroud)
?
我可以在Selenium中获取一个元素的ID ((RemoteWebElement) webElement).getId(),它会返回一个这样的字符串:
{e9b6a1cc-bb6f-4740-b9cb-b83c1569d96d}
Run Code Online (Sandbox Code Playgroud)
我想知道该ID的来源.我正在使用FirefoxDriver(),所以这与Firefox有关吗?
有没有办法只通过知道这个ID来选择一个带有Jquery的元素?
我想匹配HTML Dom树中具有值"foo"的任何属性的所有元素.它应该是CSS或XPath选择器.
我天真的方法就像css选择器一样:
*[*='foo']
Run Code Online (Sandbox Code Playgroud)
正确的语法怎么样?
我知道James Padolsey的jQuery正则表达式插件:http://james.padolsey.com/javascript/regex-selector-for-jquery/
但我需要一些不同的东西:
以下内容将匹配要求1,但不符合2:
$('*').filter(function() {
return this.text().match(/\d\d\d/);
});
Run Code Online (Sandbox Code Playgroud)
知道我怎么能以良好的表现做到这一点?
有没有一种有效的方法来计算特定元素的最深层后代级别?
例:
<div id="wrapper">
<ul>
<li class="first">first</li>
<li class="active">second</li>
<li class="last"><a>third</a></li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
#wrapper应该返回一个后代级别,4因为最深的链是这样的:#wrapper > ul > li > a.
li.first应该返回,1因为它没有孩子,li.last应该返回2因为li.last > a.
我可以做一个$('#wrapper').find(*)迭代所有结果,对于有很多后代的元素来说应该很慢,特别是对于body元素.
这是一个实验的开始:http://jsbin.com/ixeWaja/1/edit
任何想法如何有效地解决这个问题?