我目前正在使用Selenium
编写一些自动化测试。我在一个页面上遇到问题我们正在使用Dynamic Objects
并且在尝试将它们存储在PageObject
时遇到问题。
我希望你可以提出一些我可以尝试的建议。
我目前遇到的问题是,在“开发预测”页面上,我们有一个基于Plays
的数量动态创建的网格,然后将SubPlays
的数量细分为附加图像。
所有对象都有独特的样式ID,例如divPlayBar_0
Play1
和divPlayBar_1
Play2
,toggleAssetVisibility_0_
0或{{1} } toggleAssetVisibility_0_1
,个别元素为SubPlays
,rigs_0_0_0
,由rigs_0_1_2
,Play#
和SubPlay#
编制索引。
我正在尝试找到一种方法将这些动态添加到我的Column#
类。如果您有任何建议,我将不胜感激。
我正在PageObject
对此进行编码,但如果您使用的话,则可以从C#
进行转换。
答案 0 :(得分:0)
我建议你不要尝试将它们全部存储在页面对象中,而是提供一种方法来获取你想要的那个。存储它们不仅需要花费大量时间来填充整个页面,因为现在可能只需要几个对象,它更可能导致StaleElementException错误,因为页面中的某些内容已经更改,因为您获取了导致必须执行的所有内容再拿一切......花更多的时间。我会做类似下面的事情。
这些都是页面对象内的方法,例如网格或其他什么。你可能不得不调整这些名字......我不知道在给出我无法看到的页面的情况下,对你有什么意义。 :)
public IWebElement getPlay(String playId)
{
return driver.FindElement(By.Id("divPlayBar_" + playId));
}
public IWebElement getSubPlay(String playId, String subPlayId)
{
return driver.FindElement(By.Id("toggleAssetVisibility_" + playId + "_" + subPlayId));
}
public IWebElement getRig(String playId, String subPlayId, String columnNo)
{
return driver.FindElement(By.Id("rigs_" + playId + "_" + subPlayId + "_" + columnNo));
}