2017-10-11 84 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 
相关问题