如果我點擊一個按鈕,它會打開模態,在那裏我必須填寫表單並點擊提交按鈕。 能夠填充表單,直到默認情況下在模式中可見的那些字段。 但是無法填充僅在向下滾動後纔可見的其他字段。模態元素無法通過硒webdriver找到
有沒有解決上述問題的方法。 對於那些元素
如果我點擊一個按鈕,它會打開模態,在那裏我必須填寫表單並點擊提交按鈕。 能夠填充表單,直到默認情況下在模式中可見的那些字段。 但是無法填充僅在向下滾動後纔可見的其他字段。模態元素無法通過硒webdriver找到
有沒有解決上述問題的方法。 對於那些元素
除了@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
謝謝你爲我工作 – joy
您需要向下滾動到元素,然後執行像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");
首先,您需要滾動,以使這些元素出現,之後寫剩下的代碼
WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("scroll(0,400)");//This will scroll page 400 pixel vertical
請參閱:[我該如何做X?](https://meta.stackoverflow.com/questions/253069/whats-the-appropriate-new-current-close-reason-for-how-do-i -do-x)對SO的期望是,用戶提出的問題不僅僅是研究來回答他們自己的問題,而且還分享研究,代碼嘗試和結果。這表明你已經花時間去嘗試幫助自己,它使我們避免重申明顯的答案,最重要的是它可以幫助你得到更具體和相關的答案!另請參見:[問] – JeffC