我是selenium webdriver的新手,我正在使用java测试表单,我遇到了无法重用WebElement实例的问题
WebElement element = driver.findElement(By.name("number"));
element.sendKeys("4");
// submit form this clears the element text box
element.sendKeys("7"); // this won't type 7 in the box?
但这有效:
WebElement element = driver.findElement(By.name("number"));
element.sendKeys("4");
// submit form this clears the element text box
WebElement element2 = driver.findElement(By.name("number"));
element2.sendKeys("7");
似乎没有必要实例化另一个webelement对象。请给我见解,谢谢。
答案 0 :(得分:0)
当您提交表单时,清除元素文本框实质上意味着HTML DOM已刷新,可能已经/所有操作都已发生:< / p>
在这种情况下,如果您尝试:
WebElement element = driver.findElement(By.name("number"));
element.sendKeys("4");
// submit form this clears the element text box
element.sendKeys("7");
Selenium会抱怨StaleElementReferenceException
因此,解决方案是重新搜索所需元素,然后按如下方式调用sendKeys()
方法:
WebElement element = driver.findElement(By.name("number"));
element.sendKeys("4");
// submit form this clears the element text box
WebElement element2 = driver.findElement(By.name("number"));
element2.sendKeys("7");
答案 1 :(得分:0)
您可以在页面对象模型中尝试页面工厂概念。 请参阅:http://toolsqa.com/selenium-webdriver/page-object-pattern-model-page-factory/
答案 2 :(得分:0)
试试这段代码:
WebElement element = driver.findElement(By.name("number"));
element.sendKeys("4");
// submit form this clears the element text box
driver.navigate().refresh();
(new WebDriverWait(driver,10)).until(ExpectedConditions.elementToBeClickable(By.name("number")));
element.sendKeys("7");