【发布时间】:2012-11-21 08:44:20
【问题描述】:
我有一个网站,我正在尝试自动化我可以登录并点击其中一个菜单,但是当我点击第三个孩子时我遇到了问题
说我有一个显示子菜单的主菜单,单击子菜单它显示第三个菜单,其中有 10 个以自上而下的顺序显示的链接,我点击了第 9 个子菜单,但我无法做到。
下面是代码:
WebElement myElement1 = driver.findElement(By.xpath("/html/body/form/div[5]/div/div[2]/table/tbody/tr/td[2]/div/div/ul/li/ul/li[2]/span/span/span"));
Actions builder = new Actions(driver);
builder.moveToElement(myElement1).build().perform();
myElement1.click();
WebElement myElement2 = driver.findElement(By.xpath("/html/body/form/div[5]/div/div[2]/table/tbody/tr/td[2]/div/div/ul/li/ul/li[2]/ul/li/span/span/span"));
Actions builder1 = new Actions(driver);
builder1.moveToElement(myElement2).build().perform();
myElement2.click();
WebDriverWait wait = new WebDriverWait(driver, 40);
WebElement ele = driver.findElement(By.xpath("/html/body/form/div[5]/div/div[2]/table/tbody/tr/td[2]/div/div/ul/li/ul/li[2]/ul/li/ul/li[9]/a/span/span"));
System.out.println(ele.getText());
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/form/div[5]/div/div[2]/table/tbody/tr/td[2]/div/div/ul/li/ul/li[2]/ul/li/ul/li[9]/a/span/span")));
System.out.println(" about to get enter time sheet" + element.getText());
System.out.println(isElementPresent(By.xpath("/html/body/form/div[5]/div/div[2]/table/tbody/tr/td[2]/div/div/ul/li/ul/li[2]/ul/li/ul/li[9]/a/span/span")));
driver.manage().timeouts().implicitlyWait(2500, TimeUnit.SECONDS);
org.openqa.selenium.Point coordinates = driver.findElement(By.xpath("/html/body/form/div[5]/div/div[2]/table/tbody/tr/td[2]/div/div/ul/li/ul/li[2]/ul/li/ul/li[9]/a/span/span")).getLocation();
System.out.println(coordinates.getX() + " " + coordinates.getY());
WebElement myElement3 = driver.findElement(By.xpath("/html/body/form/div[5]/div/div[2]/table/tbody/tr/td[2]/div/div/ul/li/ul/li[2]/ul/li/ul/li[9]/a/span/span"));
Actions builder3 = new Actions(driver);
builder3.moveToElement(myElement3).build().perform();
myElement3.click();
最后一个下拉菜单失败了。
【问题讨论】:
-
请注意,您不需要从树的最顶端开始,即您不必从
html开始并通过HTML 一直到您的元素。此外,您的 XPath 很大程度上基于元素的位置,这可能是问题的一半。 -
不幸的是,我只有 500 个字符,我无法粘贴整个内容,所以部分代码在下面的评论中,
-
完整的 xpath 应该没有问题,可以说当我在同一个浏览器上运行它时,如果我错了,请纠正我
-
不,你是对的,它可能不是,但它更像是一个小费。您可以编辑您的问题以放入您的 HTML,不要将其发布在 cmets 中。
标签: java selenium webdriver selenium-webdriver