首先我需要鼠标悬停然后打开一个下拉菜单然后我会点击该链接。它在firefox,chrome和问题工作正常就好了。
这是代码
WebElement element=driver.findElement(By.xpath("/html/body/div/span/form[2]/div[1]/div[1]/div[3]/div[2]/ul/span[3]/li/a"));
Actions act=new Actions(driver);
act.moveToElement(element).build().perform();
WebElement element2=driver.findElement(By.xpath("/html/body/div/span/form[2]/div[1]/div[1]/div[3]/div[2]/ul/span[3]/li/ul/span[1]/li/a"));
Actions act1=new Actions(driver);
//act1.click(element2);
act1.moveToElement(element2).click(element2).build().perform();
当我们使用这段代码时,它甚至可以在IE浏览器中使用
caps.setCapability("requireWindowFocus", true);
如果我们使用requiredwindow
,即使在IE浏览器中也能正常工作,因此定位器没有问题
但我不鼓励在我的项目中使用上面的requiredwindowfoucs
代码。
还有其他办法吗。
当我们不使用requiredwindowfocus
时,即Ie浏览器中的问题,它正在点击其他链接,所以假设问题是焦点。
如果不使用requiredfoucswindow
答案 0 :(得分:0)
我的项目中也有类似的问题。在IE中,单击下拉值不起作用。我有一个非常奇怪和意想不到的解决方案。在执行操作之前查找元素。我假设这是必需的,因为当你移动到element1并且当试图找到元素时,IE Xpath处理器会弄乱焦点。
WebElement element=driver.findElement(By.xpath("/html/body/div/span/form[2]/div[1]/div[1]/div[3]/div[2]/ul/span[3]/li/a"));
WebElement element2=driver.findElement(By.xpath("/html/body/div/span/form[2]/div[1]/div[1]/div[3]/div[2]/ul/span[3]/li/ul/span[1]/li/a"));
Actions act=new Actions(driver);
act.moveToElement(element).build().perform();
act.moveToElement(element2).click(element2).build().perform();
请尝试这个,让我知道这是否也适合你!
另外,请考虑使用相对XPath而不是您使用的绝对XPath。第二个动作不是必需的。一个动作应该可以解决问题。
编辑基于用户评论
移至element1正在运行,列表正在显示。所以我假设element2是可见的,所以我们可以直接点击它而不使用Actions
类
Actions act=new Actions(driver);
act.moveToElement(element).build().perform();
element2.click();