我试图在UI测试中使用页面对象模式。许多示例假设在类字段中按(定位器)保存。其他人建议保存WebElement(或SelenideElement,如果您使用的是Selenide)。虽然这两种方法都适用于硬编码定位器,但我不知道如何将其用于路径包含变量的定位器。
例如,如何在类字段中保存此定位器?
public SelenideElement getTotal(String type) {
return $(By.xpath("//h4[contains(text(), '"+ type +"')]");
}
您实际上不需要将定位器保存到类字段。页面对象不必声明类字段中的所有元素。页面对象是一个对象,这意味着它必须提供方法来操作它。
因此,您的解决方案非常理想。:)
在我看来,你的解决方案是正确的。
我通常会像您所做的那样将它们放在PageObject的顶部,靠近其他选择器。只需使用该方法,就像您使用SelenideElement
字段之一一样。类似:
private SelenideElement getTotalElementByType(String type) {
return $(By.xpath("//h4[contains(text(), '"+ type +"')]");
}
不过,我会将其设为私有
或受保护
,因为使用Page Object Pattern,您的测试脚本不应该知道页面对象上的WebElements
。
您可以公开访问的方法如下:
public int getTotalByType(String type) {
string totalString = getTotalElementByType(type).getText();
int total = //convert to int or whatever
return total;
}
如果您想与元素交互而不是获取值,您将返回您希望转到的PageObject以遵循POPattern。:)
对于所有的复选框和单选按钮,我创建了一个定位器生成器: 和定位器策略: 元素: 这工作完美,在我的硒IDE中是ee类似于radio =new_yes但是当我在收音机上单击时,我看到硒ide中有两个命令。一个命令带有定位器生成器,另一个命令带有属于复选框中标签的长 xpath 的命令。如何仅记录复选框中的输入字段?而不是标签?
本文向大家介绍硒中的xpath是什么?,包括了硒中的xpath是什么?的使用技巧和注意事项,需要的朋友参考一下 Xpath是Selenium中用于识别Web元素的最重要的定位器之一。它以以下方式工作- 它借助元素及其属性(用于标识)在文档对象模型(DOM)中导航。 尽管它有助于唯一地定位元素,但从其他定位器来看,它的速度较慢。 xpath用两种方式表示,即“ /”和“ //”。正斜杠表示绝对路径。
考虑以下简单类: 默认的模板化set方法对大多数T类型的值都很好,但我需要对特定类型的行为进行特殊化,将其称为String。 因此,在关联的CPP文件中,我添加了以下内容: 为什么在Xcode中工作而在Visual Studio中不工作 哪个编译器的行为正确,该问题应该被认为是另一个编译器中的bug吗? 顺便说一句,我尝试在头文件中创建一个显式签名: Xcode对此没有抱怨,一切都仍然有效。然而,
问题内容: 在UML图上,代表模板类的正确方法是什么? 问题答案: 在右上角带有虚线矩形的普通矩形,代表模板参数。像这样:
我是Selenium、TestNG和Selenium Grid的新手。我对何时需要使用Selenium Grid有点困惑。以下是我对此的理解。如果我是对的,请告诉我: Selenium Grid仅用于在另一台机器上远程运行您的测试 如果我需要在本地机器中并行运行我的测试,则无需使用Grid。这可以通过仅使用TestNG来实现 如果我需要在不同的远程机器上并行执行我的测试,那么我必须使用硒网格和Te
问题内容: 我正在尝试以编程方式测试网站列表的加载时间。目的是大致模拟用户将感知的页面加载时间。 我的第一种方法是在循环内调用以下代码: 问题是有时我会在页面真正加载之前得到时间结果(即我获得50ms次),因此我猜想控件在完成之前会移交给下一条指令。 我应该怎么做才能改善这项测试? 编辑: 正如user1258245所建议的那样,我可以等待元素加载,但是问题是我不知道哪些页面需要预先加载。 问题答