Selenium Webdriver - 在CSS定位器

时间:2016-06-21 14:33:01

标签: java selenium selenium-webdriver css-selectors

我正在尝试编写一个点击链接的自动化步骤,我需要用来定位链接的定位器与title属性的末尾匹配,原因是可能有多个相同类型的链接其中一些将被命名为相同,我正在看的标题的这一部分是这些链接中的唯一一点保证是唯一的(不是我的电话,这是我正在编写测试的现有系统)。我没有问题使用这种方法找到链接的定位器。

注意:由于我的雇主的数据安全限制,代码的某些元素已经修改。

@FindBy(css = "#id .Content form > a[title$='12345678']")
WebElement linkName;

然而,我正在寻找的标题末尾的参考编号可能会改变,这取决于其他数据输入,并且它将在我的自动化套件中用于多个地方,所以我想要做的是存储这个数字作为一个字符串在套件的最开始,并有定位器,以及任何其他需要它的区域,引用它,这是我的麻烦开始的地方。我似乎无法让定位器工作引用字符串..当我尝试这个时,我不断收到错误,通常是语法错误。

@FindBy(css = "#id .Content form > a[title$='%s']", titleVariable)
WebElement linkName;

我尝试过多次重新排列,但似乎无法将其变为工作格式。任何建议都会受到欢迎。

如果这似乎不清楚,我道歉。如上所述,由于我的雇主业务的性质,由于数据安全限制我不能给出太多细节,因此必须以比我可能更多的方式解释事情。

2 个答案:

答案 0 :(得分:1)

首先,你必须在这里使用常量变量。所以使用如下代码:

final String titleVariable = "ur title";

@FindBy(css = "#id .Content form > a[title$='"+titleVariable+"']")
WebElement linkName;

答案 1 :(得分:0)

如果您在此课程中有WebDriver对象,则可以执行以下操作:

String titleVariable = "Your Title";
String cssSelector = "#id .Content form > a[title$='" + titleVariable + "']";

WebElement linkName = driver.findElement(By.cssSelector(cssSelector));