gpt4 book ai didi

java - Selenium WebDriver - 模拟鼠标悬停时的奇怪行为

转载 作者:太空宇宙 更新时间:2023-11-04 06:49:31 25 4
gpt4 key购买 nike

我有一个下拉菜单,其标记如下:

<li>
<a href="#">Services</a>
<div class="menu-drop">
<a href="#">Service 1</a>
<a href="#">Service 2</a>
</div>
</li>
<li>
<a href="#">Operations</a>
<div class="menu-drop">
<a href="#">Operation 1</a>
<a href="#">Operation 2</a>
</div>
</li>

链接“服务”和“操作”是菜单项,将鼠标悬停在其上会弹出一个带有两个子菜单项的下拉 div。

现在,如果我必须使用 WebDriver 单击“服务 1”链接,我必须将鼠标悬停在“服务”菜单选项上,然后单击“服务 1”。

我使用以下代码来执行此操作:

WebElement menu = driver.findElement(By.linkText("Services"));
Actions builder = new Actions(driver);
builder.moveToElement(menu).build().perform();
WebElement li = menu.findElement(By.xpath("ancestor::li"));
WebElement menuDrop = li.findElement(By.className("menu-drop"));
WebElement subMenuLink = menuDrop.findElement(By.linkText("Service 1"));
subLink.click();

顺便说一句,我使用 Eclipse 来开发我的框架。

现在,上面的代码工作得很好,只有当我在 Eclipse 中调试它时。意思是,我在此处给出的代码片段的第一行旁边有一个断点,然后按 F6 并继续这样做,它工作得很好。

但是当我不这样做时,也就是说,当我在没有断点的情况下运行代码时,它就不起作用。发生的情况是,执行了悬停,但只持续了不到一秒,并且出现以下行

WebElement subMenuLink = menuDrop.findElement(By.linkText("Service 1"));

返回没有此类元素的异常。

可能是什么问题?

最佳答案

如果这在 Debug模式下有效,则意味着可能是同步问题。您可能试图在 DOM 更新之前单击该元素。您发现的周围的工作可能只是误报。当您将鼠标移动到 Activity 窗口时,DOM 可能会被加载,这就是为什么您可以单击该元素。

你尝试过这样的事情吗?

WebDriverWait wait = new WebDriverWait(driver,30);
WebElement menu = driver.findElement(By.linkText("Services"));
Actions builder = new Actions(driver);
builder.moveToElement(menu).build().perform();
wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Service 1"))).click();

编辑 #1 试试这个,

 builder.moveToElement(menu).click(driver.findElement(By.linkText("Service 1"))).perform();

如果您收到 linkText 的 NoSuchElementException 异常,那么您必须使用 WebDriverWait,因为您试图在元素实际出现在 DOM 中之前找到该元素。在这种情况下请尝试以下操作。

builder.moveToElement(menu).click(wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Service 1")))).perform();

关于java - Selenium WebDriver - 模拟鼠标悬停时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23526583/

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