2013-12-13 58 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

錯過了它離開屏幕。你在使用什麼瀏覽器驅動程序。其他人是否允許您點擊它。 –