当鼠标悬停在网页中的特定帧时,我必须选择网页链接,按钮(链接到下一页)将会显示。
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中是否有任何解决方案
答案 0 :(得分:1)
在各种浏览器的某些驱动程序上,除非您在创建驱动程序时明确启用本机事件,否则有时这样的自定义操作将无效:
FirefoxProfile profile = new FirefoxProfile();
profile.setEnableNativeEvents(true);
driver = new FirefoxDriver(profile);
或在为远程驱动程序创建DesiredCapabilities时设置它的另一种方法
DesiredCapabilities desiredCapabilities = DesiredCapabilities.internetExplorer();
desiredCapabilities.setCapability("nativeEvents", true);
答案 1 :(得分:0)
使用Action Chains时,我总是发现在同一个链中执行所有操作更可靠。因此,不要“暂停”找到现在显示的元素,而是在链中尝试这样做。
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();
希望这会有所帮助。
答案 2 :(得分: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();
请告诉我上述脚本是否有效。
答案 3 :(得分: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();