我希望使用selenium和Chrome执行一组Cucumber测试。我的大部分测试都很好。我目前正试图对一个特定步骤进行参数化,以便任何使用Test的人都可以简单地命名他们想要的元素,测试就会找到它们。
Cucumber测试看起来像这样:
When I go to the "Inventory" / "Inventory" application
And I search the "Description" field for "a"
我能够非常轻松地将when语句设置为参数化,但And语句给我带来了更多麻烦。页面本身有几组具有一致id方案的表。带有“Description”一词的标题的xpath如下所示:
//label[@id='m6a7dfd2f_ttrow_[C:2]_ttitle-lb']
并且输入字段具有此xpath
//td[@id='m6a7dfd2f_tfrow_[C:2]-c']/input
作为参考,位于标签室下方的下一个输入字段具有此xpath
//td[@id='m6a7dfd2f_tfrow_[C:3]-c']/input
所以每个标签和输入字段都有相同的id方案,只有“c:”后面的数字似乎有所改变。该数字对于标签和相应的输入值都是相同的。我想知道如何扫描页面中的“描述”一词,并提取与其关联的元素的ID,然后将其截断为数字。我已经设置了变量以保留其余部分,希望如下:
@When("^I search the \"([^\"]*)\" field for \"([^\"]*)\"$")
public void i_search_the_field_for(String searchField, String searchItem) throws Throwable {
String baseinputXPath = "//td[@id='m6a7dfd2f_tfrow_[c:";
String endinputXPath = "]-c']/input";
String elementNumber = "The return of some sort of method based on searchField";//TODO
driver.findElement(By.xpath(baseinputXPath + elementNumber + endinputXPath)).clear();
driver.findElement(By.xpath(baseinputXPath + elementNumber + endinputXPath)).sendKeys(searchItem);
driver.findElement(By.id("search_button_img")).click();
如果有办法仅根据描述文字提取该数字,那将非常有用。
答案 0 :(得分:0)
使用xpath搜索带有单词'描述'的WebElement。在标签标签中。
"//label[text(),'Description']" or "//label[.='Description']" or "//label[contains(text(),'Description')]"
使用getAttribute("id")
获取ID。