2015-10-14 88 views
0

首先,我需要将鼠标悬停然后打开一个下拉列表,然后我将点击该链接。它在Firefox中正常工作,Chrome和问题在ie中。问题集中在ie浏览器中使用硒webdriver代码

下面是代码

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浏览器中,当我们如果我们使用requiredwindow集中,即使在IE浏览器工作正常,所以使用这段代码

caps.setCapability("requireWindowFocus", true); 

没有定位器问题

但我不鼓励在我的项目中使用以上requiredwindowfoucs代码。 有没有其他办法可以做到这一点。

在IE浏览器中,当我们没有使用requiredwindowfocus时,它是点击其他链接,所以我们假设问题是焦点。

所以好心帮我这个问题,而无需使用requiredfoucswindow

回答

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。第二个操作不是必需的。一个行动应该做的伎俩。

编辑用户评论基于

移动到部件1的工作,并且正在显示的列表。所以我假设element2的是可见的,所以我们可以直接点击它,而无需使用Actions

Actions act=new Actions(driver); 
act.moveToElement(element).build().perform(); 
element2.click(); 
+0

它不工作 –

+0

朝该但是无法移动点击它。我上意味着链接 –

+0

这是它能够移至element1然后移至element2? – Sighil