2017-10-11 180 views
-2

如果我點擊一個按鈕,它會打開模態,在那裏我必須填寫表單並點擊提交按鈕。 能夠填充表單,直到默認情況下在模式中可見的那些字段。 但是無法填充僅在向下滾動後纔可見的其他字段。模態元素無法通過硒webdriver找到

有沒有解決上述問題的方法。 對於那些元素

+0

請參閱:[我該如何做X?](https://meta.stackoverflow.com/questions/253069/whats-the-appropriate-new-current-close-reason-for-how-do-i -do-x)對SO的期望是,用戶提出的問題不僅僅是研究來回答他們自己的問題,而且還分享研究,代碼嘗試和結果。這表明你已經花時間去嘗試幫助自己,它使我們避免重申明顯的答案,最重要的是它可以幫助你得到更具體和相關的答案!另請參見:[問] – JeffC

回答

0

除了@Shoaib Akhtar的回答,您可以使用JavascriptExecutor滾動到元素

// Create instance of Javascript executor 

JavascriptExecutor je = (JavascriptExecutor) driver; 

//Identify the WebElement which will appear after scrolling down 

WebElement element = driver.findElement("Locator"); 

// now execute query which actually will scroll until that element is not appeared on page. 

je.executeScript("arguments[0].scrollIntoView(true);",element); 

//and then code for operations 
+0

謝謝你爲我工作 – joy

0

您需要向下滾動到元素,然後執行像sendKeys這樣的操作。你還需要申請等待。

可以使用org.openqa.selenium.interactions.Actions類移動到一個元素:

WebElement element = driver.findElement(By.id("my-id")); 
Actions actions = new Actions(driver); 
actions.moveToElement(element); 
actions.perform(); 

對於向下滾動,沒有元素:

WebDriver driver = new FirefoxDriver(); 
JavascriptExecutor jse = (JavascriptExecutor)driver; 

jse.executeScript("window.scrollBy(0,250)", ""); 

OR

jse.executeScript("scroll(0,250)"); 

試試下面的代碼: -

JavascriptExecutor js = (JavascriptExecutor) driver; 
js.executeScript("javascript:window.scrollBy(250, 350)"); 

嘗試Sankalp代碼,將工作

完整的代碼例子如: -

driver.get("https://jquery.com/"); 

try { 
    Thread.sleep(6000); 
} catch (InterruptedException e) { 
    e.printStackTrace(); 
} 
JavascriptExecutor js = (JavascriptExecutor) driver; 
WebElement element = driver.findElement(By.xpath("//*[@id=\"legal\"]/ul/li[1]/a")); 
js.executeScript("arguments[0].scrollIntoView(true);",element); 
System.out.println("Done"); 
+0

嗨,先生,我試圖通過使用上述代碼滾動,但它不滾動 – joy

+0

,並沒有拋出任何錯誤 – joy

+0

增加了一個答案的例子。 sankalp代碼作品 –

0

首先,您需要滾動,以使這些元素出現,之後寫剩下的代碼

WebDriver driver = new FirefoxDriver(); 
JavascriptExecutor jse = (JavascriptExecutor)driver; 
jse.executeScript("scroll(0,400)");//This will scroll page 400 pixel vertical