Selenium webdriver 如何使用SeleniumWebDriver在嵌套范围中查找元素?

Selenium webdriver 如何使用SeleniumWebDriver在嵌套范围中查找元素?,selenium-webdriver,Selenium Webdriver,我试图点击span n6中的“新交易”链接,该链接是span n2的子元素。我可以到达n2,但它不能识别“n6”。 请帮助我是Selenium WebDriver的新手 在这里,我张贴的html和我的代码 交易 新的 贸易 贸易 浏览器 我想点击新交易 我的代码一直到span'n2': driver.switchTo().frame(driver.findElement(By.name("treeFrame"))); WebElement allFormChildElements = dri

我试图点击span n6中的“新交易”链接,该链接是span n2的子元素。我可以到达n2,但它不能识别“n6”。 请帮助我是Selenium WebDriver的新手

在这里,我张贴的html和我的代码

交易

新的 贸易

贸易 浏览器

我想点击新交易

我的代码一直到span'n2':

driver.switchTo().frame(driver.findElement(By.name("treeFrame")));

WebElement allFormChildElements = driver.findElement(By.name("the_form"));
allFormChildElements.findElement(By.linkText("Trading")).click();  

WebElement modalDialog = allFormChildElements.findElement(By.className("border"));
WebElement newmodalDialog = modalDialog.findElement(By.className("formScrollableMenuContent")); 
System.out.println(newmodalDialog.findElements(By.tagName("a")).size()); // ans 5 

WebElement newDialog= newmodalDialog.findElement(By.id("n2"));
System.out.println(newDialog.findElements(By.id("n3")).size()); // ans 0

你能试试下面吗

//a[contains(text(),"New Trade")]

对于图像,我无法进行测试,但是,如果您能够访问元素
,那么您可以使用以下xpath来单击文本为“New Trade”的元素:

编辑

如果id值更改,请尝试以下方法:

newDialog.findElement(By.xpath(".//span/a[@name='A6' and text()='New Trade']")).click();

尝试使用@Aarya建议的xpath。我尝试使用xpath allFormChildElements.findElement(by.xpath(//a[contains(text(),\“New Trade\”))))。单击();但它不起作用:(.Try:driver.findElement(By.xpath(//a[contains(text(),“New Trade”)))或Try driver.findElement(By.linkText(“New Trade”));我尝试了这两种方法,但都不起作用:(将代码放在Try-catch中并尝试查看错误。您可以在控制台中看到错误。简单的调试内容。我尝试使用xpath allFormChildElements.findElement(By.xpath(“//a[contains(text(),\“New Trade\”)))))。单击();但它不起作用:(.这工作非常好,但唯一的问题是id值是dynmaic,有时是n6,有时是n26,请您指导我在这种情况下可以做什么,以便将相同的逻辑应用于n6中的嵌套元素。此外,当我试图打印id=n2中的总跨距时,它的值为0。请建议。它工作正常,并且使用它s我也可以访问新交易中的嵌套元素。非常感谢。最后一次你能抽出一些时间来帮助我讨论这个话题吗。
newDialog.findElement(By.xpath(".//span/a[@name='A6' and text()='New Trade']")).click();