gpt4 book ai didi

java - java中的Selenium下拉问题

转载 作者:行者123 更新时间:2023-11-29 09:08:43 24 4
gpt4 key购买 nike

我有一个网站,我正在尝试自动化我可以登录并单击其中一个菜单,但是当我单击第三个子项时我遇到了问题

假设我有一个显示子菜单的主菜单,点击子菜单显示第三个菜单,其中有 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();

最后一个下拉菜单失败了。

最佳答案

为 selenium 2.0 提交了类似的错误并且已经关闭。请引用最新的 selenium 稳定版本。

让我们引用下面的 2 级菜单下拉菜单。

Menu
Item 1
SubItem1
SubItem2
Item 2

我会建议解决这个问题的两种方法

方法 1: 从您的上述代码中,我看到为 Level1 菜单项和 Level2 菜单项定义了点击事件。而是直接引用 2 级项目而不单击 1 级项目,如下所示:

Menu.click();
Actions Build = new Actions(driver);
Build.moveToElement(Menu).moveToElement(Item1).moveToElement(SubItem2).click().build().perform();

方法 2 JavaScript 方式,但点击页面上的菜单项是一种安全的解决方法。

js.ExecuteScript("return $(\"a:contains('Menu')\").mouseover();");
js.ExecuteScript("return $(\"a:contains('Item1')\").next(':eq(1)').mouseover();");
driver.FindElement(By.LinkText("SubItem2")).Click();

这是使用方法 1 的实例...(C# 代码片段和亚马逊网站)

        IWebDriver driver = new InternetExplorerDriver();
driver.Navigate().GoToUrl("http://www.amazon.com/gp/goldbox/ref=cs_top_nav_gb27");
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));

IWebElement Menu = driver.FindElement(By.Id("nav-bar-inner")).FindElement(By.Id("nav-shop-all-button"));
Menu.Click();

IWebElement Item1 = driver.FindElement(By.Id("nav_cat_4"));
Actions Build = new Actions(driver);
Build.MoveToElement(Menu).MoveToElement(Item1).Click().Build().Perform();

IWebElement SubItem = driver.FindElement(By.Id("nav_subcats_4")).FindElement(By.LinkText("Games"));
Build.MoveToElement(Menu).MoveToElement(Item1).MoveToElement(SubItem).Click().Build().Perform();

这是亚马逊网站的示例,最初它首先点击顶部菜单,然后点击 Item1(级别 1),然后通过 TopMenu 通过 Level1 点击 Item2

我希望这会有所帮助....祝一切顺利:)

关于java - java中的Selenium下拉问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13489368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com