2011-09-07 150 views
6

我使用Selenium WebDriver(v2.5.0)。我得到這個錯誤,當我用一個driver.click(...)「命令Selenium:我如何讓WebDriver忽略「元素不可見」的錯誤?

Element is not currently visible and so may not be interacted with Build info: version: '2.5.0', revision: '13516', time: '2011-08-23 18:30:44' System info: os.name: 'Linux', os.arch: 'amd64', os.version: '2.6.38-10-generic', java.version: '1.6.0_26' Driver info: driver.version: RemoteWebDriver 

在瀏覽器中,當一個元素上我將鼠標懸停,被點擊的元素變得可見。有沒有什麼方法可以檢查東西是否是可見或不可見?

回答

12

您可以通過動作做到這一點。爲了達到你想要什麼,使用Python webdriver的客戶端,但原理是一樣的。

ActionChains(driver).move_to_element(driver.find_element(By.ID, 'Foo'))\ 
    .click(driver.find_element(By.Name, "Bar"))\ 
    .perform() 
+0

我已經找到了元素。而不是.send_keys,我該如何強制執行它? – User

4

你最好的解決方案是不使用click()方法,但以實施行動並擁有硒(通過webdriver)模擬鼠標移動元素以激活事件,然後使元素可點擊/啓用。一旦你激活了元素,然後根據需要執行click()方法。我假設該元素被禁用,使其無法在第一時間點擊。

建立你的元素,你也可以使用具有hover()方法的RenderedWebElement,那麼你不需要創建下面的Actions對象,但它可能無法工作,這取決於應用程序是如何設計本地事件的。試試看看哪個最好,最優雅。

WebElement element = driver.findElement(By.id("element_id")); 

創建由webdriver的

Actions actions = new Actions(driver); 

將光標移動到該元素支持的新actions對象 - 這將「激活」你的元素,可以點擊

actions.moveToElement(element).perform(); 

驗證元素現在點擊或「已啓用」

assertThat(element.isEnabled()); 

現在執行點擊操作

element.click(); 
相關問題