2013-12-13 55 views
1

我必须对弹出窗口进行测试,我在Python中使用WebDriver Selenium。Web驱动程序Selenium - Z-index问题

简而言之,如果我打开弹出窗口,它会覆盖在覆盖层下,并且它仍然不可点击......但是如果我使用WebDrivers Selenium Everythings作品测试此运动。

popup = browser.find_element_by_id('help_paid_options') 
if popup.is_displayed(): 
    print 'Found' 
else: 
    print 'Not Found' 

popup.find_element_by_xpath("//*[@id='help_paid_options']/* [contains(@class,'x_pop_close')]").click() 

if popup.is_displayed(): 
    print 'Found' 
else: 
    print 'Not Found' 

我怎样才能测试一个元素是可点击(真正)。

回答

2

Java你可以试试这样做。只需将方法改为在Python中如何实现它。

对于FireFox和IE 您可以获取两个z-索引并检查弹出窗口是否大于其后面显示的页面元素。

//Get the elements you want to compare 
WebElement element=driver.findElement(By.xpath("XPATH For Panel")); 
WebElement elementTwo=driver.findElement(By.xpath("XPATH For Pop Up")); 


//Then get the values of the z-indexes 
String zindex = element.getCssValue("z-index"); 
String zindexTwo = elementTwo.getCssValue("z-index"); 

然后解析字符串为int和比较,您的弹出面板上有一个较大的z-index

另一种解决方案只是使用ChromeDriver,因为它不能点击隐藏要素

要使用ChromeDriver

System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver.exe"); 
WebDriver driver=new ChromeDriver(); 

您可以向下从这里加载ChromeDriver http://chromedriver.storage.googleapis.com/index.html

+0

是的,这是一种方法,但我不想测试“z-index factor”,而是可以由其他原因生成的“unclickable factor”(在这种情况下是“z-索引“,但在其他情况下可以是项目的重叠)。 有一种方法来模拟真正的用户交互?谢谢 – Nothing

+0

当然!正如你所看到的,在代码中我称之为“单击”来点击“x”来关闭弹出窗口和所有东西,但是它不应该工作,因为它位于覆盖层后面。 – Nothing

+0

错过了它离开屏幕。你在使用什么浏览器驱动程序。其他人是否允许您点击它。 –