模态元素无法通过selenium webdriver找到

时间:2017-10-11 08:44:58

标签: selenium selenium-webdriver automation

如果我点击一个按钮,它将打开模态,我必须填写表格并单击提交按钮。 能够填写表格,直到默认情况下在模态中可见的那些字段。 但是无法填充仅在向下滚动后可见的其他字段。

针对上述问题是否有任何解决方案。 对于那些元素

3 个答案:

答案 0 :(得分: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");

答案 1 :(得分:0)

在编写剩余代码

之后,您需要先滚动才能显示这些元素
WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("scroll(0,400)");//This  will scroll page 400 pixel vertical

答案 2 :(得分: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