您可以在此处看到xpath1
和xpath2
部分相同。我不想在两个相关场景中使用两个单独的xpath
。我只能使用xpath1
。
String xpath1="//div[@id='name']"; //parent element
String xpath2="div[@id='name']/div[5]"; //child element
WebElement ele1=driver.findElement(By.xpath("xpath1"));
WebElement ele2=driver.findElement(By.xpath("xpath1")).finElement(By.xpath());
我希望仅在ele2
的帮助下获得xpath1
。
请建议我如何操作以及如何动态地在Div[5]
中输入5。
driver.findElement().findElement();
的概念是什么?
答案 0 :(得分:0)
要将元素用作父元素,您希望执行的操作类似于以下内容:
WebElement ele1 = driver.findElement(By.xpath("xpath1")); //parent element
WebElement ele2 = ele1.findElement(By.xpath("./div[5]")); // child - note "./" very important
通过制作“div [5]”并不完全确定你的意思,但我之前所做的就是抓住所有元素然后遍历它们以获得正确的索引。例如:
int i = 0;
List<WebElement> elements = driver.findElements(By.Xpath("xpath"));
for (i; i < elements.size(); ++i) {
if (elements.text().equals("blah")
break;
}
WebElement el2 = el1.findElement(By.Xpath("./div[" + i + "]"));
...
...
在任何情况下,通常不建议使用该表示法,因为它可以轻松更改。理想情况下,您希望在没有id的情况下使用更强大的xpath或css选择器。
答案 1 :(得分:0)
这样吗?我根本没有得到它。请建议我怎么做以及如何动态地给Div [5]中的enter 5。
String xpath1 = "//div[@id='name']"; //parent element
String xpath2 = "/div[5]"; //child element
WebElement ele2=driver.findElement(By.xpath(xpath1)).finElement(By.xpath(xpath2));
driver.findElement()。findElement();?
的概念是什么?
在第一个元素之后,您可以将WebElement
用作HTML / XML根页,并且仍然可以查询它以查找更多元素。如果您需要查询节点及其子节点超过两次或三次,而不重复基本节点路径查询,则非常有用。
答案 2 :(得分:0)
WebElement ele1 = driver.findElement(By.Id("name")); //for your parent element
WebElement ele2 = ele1.findElement(By.xpath("./div[5]")); // your child element
或
WebElement ele1 = driver.findElement(By.xpath("xpath1")); //for your parent element
WebElement ele2 = ele1.findElement(By.xpath("./div[position()=5]")); // your child element
或
WebElement ele1 = driver.findElement(By.xpath("xpath1")); //for your parent element
WebElement ele2 = ele1.findElement(By.xpath("./child::div[5]")); // your child element
或先使用孩子,然后转到父母
WebElement ele1 = driver.findElement(By.xpath("xpath2")); //for child element
WebElement ele2 = driver.findElement(By.xpath(xpath2 + "/parent::*")); // your parent element
如果您查找一些xpath示例,那么有一个很好的cheatsheet here。
答案 3 :(得分:0)
只需找到Parent元素,然后找到Child元素。
:t
而不是使用此
//parent element locator
WebElement ParentElement = driver.findElement("your locator"));
//Child element locator
WebElement ChildElement = ParentElement.findElement("your locator"));
使用此:
String xpath1="//div[@id='name']"; //parent element
String xpath2="//div[@id='name']/div[5]"; //child element
WebElement ele1=driver.findElement(By.xpath("xpath1"));
WebElement ele2=driver.findElement(By.xpath("xpath1")).finElement(By.xpath());