2017-06-20 66 views
0

正如你在下面看到的,我得到列表中的所有行。然后,当遍历行列表时,我从每行中抽出Web元素。但是,当我拉出Web元素时,我不断收到列表中的第一个Web元素。元素列表在我嵌套findelement后继续使用第一个元素

System.out.println(row.getText()); //Prints correct values 
System.out.println(actualFirstName.getText() + " " + actualLastName.getText()); //Prints incorrect values 

代码:

​​

任何帮助将不胜感激。

+1

不是真的su重新尝试在这里做什么。你说迭代总是给你列表中的第一个元素,但是你说你的打印语句给你提供正确的行被引用的信息。此外,您在findElement方法中使用的值“firstNameLocator”和“lastNameLocator”是什么。它们似乎是来自类的静态值,不会作为参数传递给方法。它们从不改变方法,所以actualFirstname和actualLastName永远不会改变。 – digidude

+1

看看你的'firstNameLocator'和'lastNameLocator'。他们可能每次都会引用第一行的元素。 – Jason

+1

你能告诉我们一个HTML样本和两个定位器是什么吗? – Jason

回答

0

审查我通过定位器进一步后,我意识到,我的XPath有它引用的第一个元素

private By brokerFirstNameLocator = By.xpath("//div[contains(@id,'first-name')]"); 
private By brokerLastNameLocator = By.xpath("//div[contains(@id,'last-name')]"); 

在哪里我应该有

private By firstNameLocator = By.xpath("./div[contains(@id,'first-name')]"); 
private By lastNameLocator = By.xpath("./div[contains(@id,'last-name')]"); 

TBH我很惊讶这是我的初始方式没有奏效,但它是一个相对与绝对路径问题