我正在尝试学习PageFactory模式。我理解了这样一个事实:当我们执行initelements
时,就会找到WebElements。例如,我点击了一个webelement,因此DOM中的其他webelements中的一个发生了更改。现在,显然我将在这里得到一个StaleElementReferenceException
。我该如何解决这个问题?
如果知道DOM中WebElement的属性可能发生变化,我是否应该再次找到特定的WebElement?还是有别的办法可以处理这件事?
StaleElementReferenceException扩展了WebDriverException,并指示元素的前一个引用现在已过时,并且该元素引用不再存在于页面的DOM上。
StaleElementReferenceException
背后的常见原因如下:
ID
或其他属性的(新)元素替换。>
当我们执行initElements时,就会找到WebElements:当您调用initElements()
方法时,该页面的所有WebElements都将初始化。例如,
LoginPageNew login_page = PageFactory.initElements(driver, LoginPageNew.class);
这行代码将初始化在loginpageNew.class
范围内定义的所有静态WebElements,无论何时何地从您的自动化脚本调用它。
我点击一个webelement,因此DOM中的其他webelements中的一个发生了变化:这是很有可能的。
如果一个旧元素被替换为新的相同元素,那么简单的策略就是调用WebDriverWait和ExpectedConditions来查找该元素。
我们在C语言中有一个现有的UI自动化框架,根据我们使用PageFactory初始化页面文件中的元素时的知识。最近我读了更多关于这个主题的内容,在C中使用PageFactory似乎没有什么真正的好处,所以我尝试使用字段来重新编写页面。我现在有一个问题,那就是让我的扩展方法发挥作用。 例如:在当前实现中,我有一个如下标识的元素:[FindsBy(How=How.LinkText,Using=“Auth
关于 PageFactory 的概念主要是Java中内置了PageFactory类。 import org.openqa.selenium.support.PageFactory; …… 例子,http://libin0019.iteye.com/blog/1260090 Python(Selenium)中没有这个类。 PageFactory 的概念和Page Object应该类似,属于
我有一个Webelements列表,其中选择了一个随机元素。现在有了一个随机的webelement,我需要找到其中的所有子元素。我怎样才能在pagefactory中实现这一点。 在selenium中,这是有效的: 在页面工厂,我尝试过: 困在如何获取标题中的随机元素使用页工厂注释。 我知道这会奏效: 当我在整个项目中使用页面工厂注释时,有没有一种方法可以实现同样的效果。
如果使用隐式和显式等待器,将发生以下错误:
我在C#6中有一个Selenium WebDriver页面对象模型。在尝试单击ajax加载的导航栏元素时,我遇到了StaleElementReferenceException。这很混乱,因为我使用的是页面工厂,没有任何缓存查找。 这是有问题的代码。我试着把重要的部分简单化。(我实际上传递了一个驱动程序,一个包装器,包装了IWebDriver)<代码>菜单栏。选择英语 导致此错误的原因是什么?我该怎
我正在我的页面对象模型自动化框架中实现pagefactory。我现有的框架在没有pagefactory的情况下运行良好。现在我正在实现pagefactory来调用元素。我面临Pagefactory元素抛出空值的问题。我怀疑这可能是因为施工人员不确定。 我已经建立了一个基于页面对象模型的框架有如下包:-com.automationframeworkcom.configutaioncom.page对象