关注使用selenium webdriver代码的浏览器问题

时间:2015-10-14 05:49:01

标签: java python selenium selenium-webdriver automation

首先我需要鼠标悬停然后打开一个下拉菜单然后我会点击该链接。它在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

,请帮助我解决此问题

1 个答案:

答案 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();