Automated tests uft能否支持多个浏览器

Automated tests uft能否支持多个浏览器,automated-tests,qtp,hp-uft,Automated Tests,Qtp,Hp Uft,uft 12.5能否支持打开两个ie浏览器的测试?我想用多个会话运行测试好的,所以你想在两个单独的浏览器窗口/页面/选项卡中打开完全相同的页面 通常,我极力主张使用对象存储库而不是描述性编程,但在这种情况下,描述性编程确实是处理它的最佳方式 首先,我想解释一下我定义web对象的方法 1) 浏览器对象不描述浏览器(即firefox、chrome)。。。相反,浏览器对象描述网站。例如,我可能在或中为“Stackoverflow.Com”定义了一个浏览器对象,并为“Amazon.Com”定义了一个单独

uft 12.5能否支持打开两个ie浏览器的测试?我想用多个会话运行测试

好的,所以你想在两个单独的浏览器窗口/页面/选项卡中打开完全相同的页面

通常,我极力主张使用对象存储库而不是描述性编程,但在这种情况下,描述性编程确实是处理它的最佳方式

首先,我想解释一下我定义web对象的方法

1) 浏览器对象不描述浏览器(即firefox、chrome)。。。相反,浏览器对象描述网站。例如,我可能在或中为“Stackoverflow.Com”定义了一个浏览器对象,并为“Amazon.Com”定义了一个单独的浏览器对象。我通常将URL作为标识属性之一,但我使用正则表达式允许URL在页面之间更改,并且仍然允许相同的浏览器对象将该站点中的任何页面标识为站点本身

2) 页面对象描述网站在任何给定时刻显示的特定页面。(我知道很多人只是对页面进行通配符,因为一个浏览器对象一次只能有一个页面子对象,但这在我的语言或结构中没有意义……)在大多数情况下,任何网站都可以说是由不同的页面组成,每个页面都可以以某种方式进行唯一标识(通常是通过URL的后半部分)。我使用正则表达式来选择网站的页面部分——无论哪个部分在该页面上从未更改过——这样每个页面对象在加载该页面时都将唯一地标识

3) 位于特定页面上的所有控件都存储在或中它们所属的页面下

我更喜欢总是使用对象存储库来存储我的对象描述。我唯一一次使用描述性编程是在我无法硬编码的时候——我在一行代码中引用的预定义对象中的哪一个。。因此,调整此策略以满足您的需要,我们将使用描述性编程来查看浏览器对象。(从理论上讲,我们仍然可以使用对象存储库来实现这一点,但我觉得它扭曲了OR,而不代表实际情况)

所以。。。使用普通代码,您可以使用
SystemUtil.Run URL
(其中URL是包含页面URL的变量)启动网页两次

然后,您可以检查第一个页面是否以如下方式存在:

if Browser("openurl:=.*stackoverflow\.com.*","index:=0").Page("title:=Stack Overflow").Exist then...
if Browser("openurl:=.*stackoverflow\.com.*","index:=1").Page("title:=Stack Overflow").Exist then...
然后检查第二页是否存在与此类似的内容:

if Browser("openurl:=.*stackoverflow\.com.*","index:=0").Page("title:=Stack Overflow").Exist then...
if Browser("openurl:=.*stackoverflow\.com.*","index:=1").Page("title:=Stack Overflow").Exist then...
请注意,唯一的区别是索引号为0或1。这应该能够分别唯一地标识每个窗口,并且只要在浏览器的描述中包含索引,就可以对任何窗口执行任何操作,即使页面完全相同

还请注意。。。浏览器是否是同一浏览器窗口中的两个选项卡,或者是否是两个单独的窗口,每个窗口包含一个选项卡,这都不重要。就QTP/UFT而言,如果打开了多个浏览器选项卡,每个选项卡都与描述
浏览器(“openurl:=.*stackoverflow\.com.*)
相匹配,那么它将使用索引(或创建时间)属性来区分它们。事实上,您可以在一个窗口中使用两个选项卡运行测试,然后手动将一个选项卡拖到它自己的窗口中,然后再次运行它,它应该仍然可以工作。见鬼,即使你打开了其他选项卡也没关系(例如,你可以打开一个Amazon.Com页面,但它仍然可以找到你的页面并忽略Amazon页面)


如果您需要更多信息,请告诉我。

通过使用多个会话测试
,您是指并行执行吗?不,我的意思是有第二个IE窗口调用同一个urlIE窗口或IE选项卡?我从来没有这样做过,但我的一个同事必须在登录后自动启动一个弹出窗口的应用程序。然后,他必须定义另一个浏览器
使用
设置brwBrowser=Browser(“CreationTime:=1”)
的对象。不确定这是否是您之前看到的。在我解释之前,您能否澄清为什么两个页面使用相同的URL?是完全相同的URL?还是同一“站点”上的不同页面?是的,我正在测试一个超时函数,我想让我的脚本调用另一个会话(IE总共两个),并使用相同的URL。答案很好,但我建议也包括这样一个事实,即您可以
设置Browser1=Browser(“openurl:=.*stackoverflow\.com.*”、
设置Browser2=Browser(“openurl:=.*stackoverflow\.com.*”,“index:=1”)
以便于以后在不混淆的情况下引用各个浏览器?是的,也可以这样做,这样您就可以得到
Browser1.Page(“title:=Stack Overflow”)…
或者您还可以将页面包含在对象中,如
Set Browser1=Browser(“openurl:=.*stackoverflow\.com.*”,“index:=0”).Page(“title:=Stack Overflow”)…
所有常见的可能性。我试图说明的要点是,当浏览器中显示某个特定网站的两个副本时,如何对其进行寻址。