0

当我将鼠标悬停到网页中的特定框架时,​​我必须选择网络链接,按钮(指向下一页的链接)将可见。

WebElement mainElement = driver.findElement(By.xpath(<frame xpath >));

Actions builder = new Actions(driver);
builder.moveToElement(mainElement);
WebElement button1 = driver.findElement(By.xpath("//*[@id='currentSkills']/div[1]/div/a"));
builder.moveToElement(button1).click().perform();

执行时我仍然无法选择特定链接,出现以下错误 org.openqa.selenium.ElementNotVisibleException:元素当前不可见,因此可能无法与之交互(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:131 毫秒

但是,当我在 AUT 期间将鼠标指针悬停在特定帧上时(只是移动到特定帧而不单击任何内容),则测试正在成功执行。

我知道这可以由 JS 处理。但我想知道 selenium webdriver 中是否有任何解决方案

4

4 回答 4

1

在各种浏览器的某些驱动程序上,有时像这样的自定义操作将不起作用,除非您在创建驱动程序时明确启用本机事件:

FirefoxProfile profile = new FirefoxProfile();   
profile.setEnableNativeEvents(true);     
driver = new FirefoxDriver(profile);

或在为远程驱动程序创建 DesiredCapabilities 时设置它的另一种方法

DesiredCapabilities desiredCapabilities = DesiredCapabilities.internetExplorer();
desiredCapabilities.setCapability("nativeEvents", true);
于 2013-06-25T16:18:55.587 回答
0
FirefoxProfile profile = new FirefoxProfile();   
         profile.setEnableNativeEvents(true);     
         driver = new FirefoxDriver(profile);    

WebElement searchBtn = driver.findElement(By.xpath(""));
    WebElement searchBtn1 = driver.findElement(By.xpath(""));
    Actions action = new Actions(driver);
    action.moveToElement(searchBtn).moveToElement(searchBtn1).click().build().perform();
于 2015-04-23T12:16:00.687 回答
0

使用动作链时,我总是发现在同一个链中执行所有动作更可靠。因此,与其“暂停”寻找现在揭示的元素,不如尝试在链中这样做。

WebElement mainElement = driver.findElement(By.xpath(<frame xpath >));
Actions builder = new Actions(driver);
builder.moveToElement(mainElement).moveToElement(driver.findElement(By.xpath("//*[@id='currentSkills']/div[1]/div/a"))).click().perform();

希望这会有所帮助。

于 2013-06-25T08:30:32.360 回答
0

我的观点是需要在对象上执行鼠标悬停以使其可见,然后单击该元素。

WebElement mainElement = driver.findElement(By.xpath(<frame xpath >));

Actions builder = new Actions(driver);

builder.moveToElement(mainElement).moveToElement(driver.findElement(By.xpath("//*[@id='currentSkills']/div[1]/div/a"))).build().perform();

driver.findElement(By.xpath("//*[@id='currentSkills']/div[1]/div/a")).click();

请让我知道上述脚本是否有效。

于 2014-04-08T09:32:20.330 回答