2017-05-09 55 views
0

我工作的一些硒的Java代碼,我執行使用executeScript JavaScript代碼如下:JavaScript的點擊,如果點擊返回true,如果不是假的

 WebElement menu = driver.findElement(By.cssSelector(string1)); 
    ((JavascriptExecutor) driver).executeScript("arguments[0].click();", menu); 

我希望能夠做的是檢測如果該元素可以被點擊,如果該按鈕被禁用,那麼點擊事件不會觸發,所以我需要一個標誌。 JS的問題是點擊事件返回undefined。

所以我需要一個標誌,我executeScript內部,例如:

 Object flag_to_stop = ((JavascriptExecutor) driver).executeScript("<<something here if returns true string else returns false string>>, menu); 

    while (Object.toString.equals(<<true string>>)) 

然後我可以執行while循環,如果flag_to_stop是假的,我可以打破;

任何建議傢伙?

這主要是一個JavaScript問題,所有的Java代碼都已經提供。

+0

我認爲,一個未定義的錯誤意味着您正試圖調用還沒有被創建的對象的事件。因此,在運行腳本之前確定它是否真的存在將是一個好的開始。 – Icewine

+0

點擊['WebElement.isEnabled()'](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebElement.html)可以檢查元素是否已啓用#isEnabled--) –

+1

myButton的= driver.find_element_by_id( 「buttonId」) 如果myButton.is_enabled(): myButton.click() 這應該做到這一點,在那裏你正在使用的JavascriptExecutor,你可以在任何特定的原因使用硒來做同樣的事情。 –

回答

0

你可以嘗試以下操作:

boolean flag_to_stop = false; 
    try{ 

    ((JavascriptExecutor) driver).executeScript("arguments[0].click();", menu); 

    flag_to_stop = true; 
    } 
    catch{Exception e){ 

    flag_to_stop = false; 
    }