在我们的项目中,我们使用cucumber进行了多个硒测试,测试特定的组件。其中一个组件是两个标识符,我们称之为国家标识符和站点标识符。它们具有以下HTML:
<div class="identifiers">
<div class="country-identifier">
<span class="ident-label">
Germany
</span>
</div>
<div class="site-identifier">
<span class="ident-label">
Gaming
</span>
</div>
</div>
现在我们的测试有两个模型,每个标识符一个:
@PageObject(css = "div.country-identifier")
@Named("CountryIdentifier")
@ScenarioScoped
public class CountryIdentifier {
@Inject
@CurrentScope
private WebElement scope;
@FindBy(className = "ident-label")
@CacheLookup
private WebElement label;
}
和:
@PageObject(css = "div.site-identifier")
@Named("SiteIdentifier")
@ScenarioScoped
public class SiteIdentifier {
@Inject
@CurrentScope
private WebElement scope;
@FindBy(className = "ident-label")
@CacheLookup
private WebElement label;
}
现在的问题是,当我想要访问站点标识符的标签时,WebElement标签的值是Germany,而不是Gaming。这是因为获取值的css选择器显然只应用类名ident label
,而没有考虑容器类。我希望生成的用于查找标签的选择器将为页面对象定义的css与@FindBy
注释中的选择器相结合。有没有办法告诉web驱动程序仅在@PageObject
注释的css选择器中指定的容器范围内按类名查找元素?或者我需要FindBy
注释中的完整css选择器,比如:
@FindBy(css = "div.site-identifier .ident-label")
和
@FindBy(css = "div.country-identifier .ident-label")
看来你就快到了。可以使用以下定位器来标识相应的图元:
>
@FindBy(css = "div.country-identifier span.ident-label")
游戏
:
@FindBy(css = "div.site-identifier span.ident-label")
根据您询问的评论更新,只可能指定“.ident label”,并使驱动程序只在页面对象注释的css指定的容器内搜索,答案是否定的。这是因为class
ident label在
>
<span class="ident-label">
Germany
</span>
游戏
:
<span class="ident-label">
Gaming
</span>
因此,WebDriver实例无法区分它们,并且总是根据流行的超文本标记语言DOM选择第一个匹配项。
有两种解决方案,如下所示:
最简单的方法是向家长求助
第一种方法是最好的方法,大多数情况下都会遵循。
问题内容: 我希望能够通过命令行命令检测计算机上安装了哪种特定的Linux风格,例如Ubuntu vs Fedora。 有人建议,但这仅报告内核版本。 问题答案: 尝试以下命令…。它对我有用… 例如,一旦知道您正在运行Red Hat,您就可以使用以下方法解决问题: 猫/ etc / redhat-release 或在Debian上: 猫/ etc / debian_version 或一般而言: 猫
我想打印第二个索引值,即SUMMER。 怎么才能实现呢?
我正在运行一个代码,该代码在文件夹中导航,最后到达目标并通过单击文件下载文件。 例如,要查找我正在使用的文件夹,请执行以下操作: 问题是文件夹有时写得不完全一样。例如,它有两个空格。 所以我的问题是:是否有可能通过包含特定单词的文本找到元素?例如这样的事情(我知道这是不对的,我只是想让你理解我): 我寻找答案,但没有找到我要找的。如果这是重复的,我道歉,并要求指出正确的方向。 提前谢谢! 编辑:使
你知道为什么吗?
当我运行此代码时: 我收到以下错误: org.openqa.selenium.InvalidSelectorException:无法计算xpath表达式'//输入[包含(@id,'name']'要留档此错误,请访问:http://seleniumhq.org/exceptions/invalid_selector_exception.html构建信息:版本:'2.20.0',修订版:'16008'
从版本0.9.9-rc2开始,SphinxSE提供了一个UDF函数,允许用户通过MySQL创建摘要。这个功能的作用与API调用BuildExcerprts的功能非常相似,但可以通过MySQL+SphinxSE来访问。 提供这个UDF的二进制文件叫做sphinx.so,当安装SphinxSE本身的时候,这个文件会自动地被创建,并且安装到合适的位置。 但如果由于某种原因它没能自动安装,那就请在创建Sp