硒IDE-偶尔处理编程的弹出窗口



我正在尝试为网站开发测试。通常,它将进入主页,单击搜索按钮到结果页面,单击第一个链接到产品页面。

但是,有时在加载第一页时,您会收到一个对话框弹出窗口,要求用户其位置显示更好的内容。

我对Selenium的新手相对较新,但是我对此做了很多研究,似乎找不到正确的答案。也许我只是不知道要搜索什么。

我该如何做一个有条件的说,说如果弹出框,请单击第一个选项,然后无论哪种方式,检查通常会出现的页面内容?

请注意,我确实知道如何测试元素等,我只是不明白如何做条件。另外,如果有任何区别,我将其导出到Perl。

预先感谢!

编辑:这是脚本。

use strict;
use warnings;
use Time::HiRes qw(sleep);
use Test::WWW::Selenium;
use Test::More "no_plan";
use Test::Exception;
use TimePerf2;
my $time= TimePerf2->new(60,90,120);

my $sel = Test::WWW::Selenium->new( host => "my_lan_ip",
                                    port => 4444,
                                    browser => "*firefox",
                                    browser_url => "https://www.website.com/" );
$time->startTime("ALL");
$sel->set_timeout_ok("120000");
if ( !  $sel->open_ok("https://www.website.com/") ) {print "Location: " . $sel->get_location() . "n";}
elsif ( ! $sel->set_speed("1500") ) { }
elsif ( !  $sel->click_ok("id=btnSearch") ) {print "Location: " . $sel->get_location() . "n";}
elsif ( ! $sel->wait_for_page_to_load_ok("120000") ) {}
elsif ( !  $sel->is_element_present_ok("css=div.azi_result") ) {print "Location: " . $sel->get_location() . "n";}
elsif ( !  $sel->click_ok("css=p.description a") ) {print "Location: " . $sel->get_location() . "n";}
elsif ( ! $sel->wait_for_page_to_load_ok("120000") ) {}
elsif ( !$time->endTime("ALL") ) { }
else { $time->getTimes(); }
$sel->stop();

您可以这样写:

List<WebElement> popUps = driver.findElements(By.yourLocator);
if (popUps.size() > 0) {
    skipPopup(popUps.get(0));
}
...normal flow...

在此片段中,我们创建了一个由某些普通定位器标识的弹出窗口列表,然后检查此列表是否为空。如果是这样,则找不到弹出窗口,我们可能会以正常的流动进行。如果列表不是空的,那么我们会有一个弹出窗口,然后跳过。Skippopup((方法中描述了跳过的逻辑(通常单击取消或类似(,该方法用列表的第一个元素馈送。这是一个简单的变体,因为我们认为可以有一个弹出窗口或零。如果可以一次有几个弹出窗口,我们需要浏览列表并跳过我们找到的每个弹出窗口。如果弹出窗口逐一出现,则在上一个关闭后,我们需要在循环中调用Findelements。更改Web驱动程序的隐式等待期的持续时间(在Findements方法中使用(也很有用(请参阅此处的说明和示例,请参见此处的说明和示例:Selenium WebDriver-测试是否存在元素(。

最新更新