2016-11-01 25 views
-1

我有硒實施的點擊功能,由.click()執行,其中包括webdriver waitsleep方法,也被Actions使用。沒有一個工作穩定,換句話說,他們有時會工作。我正在使用硒服務器獨立-2.53.0.jarselenium click無法替代java腳本執行程序點擊

我得到了一個工作,圍繞使用Javascript executor作爲大部分時間工作。

JavascriptExecutor executor = (JavascriptExecutor) driver; 
executor.executeScript("arguments[0].click();", element); 

任何一個可以表明這個或更好的方式來Java腳本的選擇,因爲我看了很多網站不推薦的Java腳本執行。

如果沒有更好的解釋,爲什麼我們應該去java腳本執行器而不是正常的click()。

在此先感謝。

+0

當它不起作用時會拋出任何異常嗎? – Sai

+0

@Sai不會拋出異常,它只是點擊操作並移動到下一步,但實際上它不會點擊按鈕。 – mmk

+0

你使用什麼類型的同步,最大等待時間是多少? – Sai

回答

0
//where driver is an instance of WebDriver that you have initialized and now displays the web page of interest 
//and where elementToBeClicked is an instance of class By, e.g. By elementToBeClicked = By.id("myButton"); 
Wait<WebDriver> wait_element = new WebDriverWait(driver, 40); 
WebElement aLinkOrButton = wait_element.until(ExpectedConditions.elementToBeClickable(elementToBeClicked)); 
aLinkOrButton.click(); 
+0

使用下面的代碼也不起作用。 'Wait wait_element = new WebDriverWait(driver,40); WebElement aLinkOrButton = wait_element.until(ExpectedConditions.elementToBeClickable(elementToBeClicked)); aLinkOrButton.click();'除了JavaScriptExecutor之外,還有其他的選擇嗎? – mmk

0

原諒我,如果它不工作.. :)

嘗試使用 「visibilityOfElementLocated」。

Wait<WebDriver> wait_element = new WebDriverWait(driver, 40); 
WebElement aLinkOrButton =  wait_element.until(ExpectedConditions.visibilityOfElementLocated(elementToBeClicked)); 
aLinkOrButton.click();