1

我正在使用 selenium webdriver 的 perl 绑定为网站编写测试脚本。我面临的问题如下所述:

我无法找到网页上存在的某些网页元素(尝试了各种方法:xpath、id、css 等),尽管我可以以用户身份单击它们。通过firebug调试后发现有一个属性叫base URI。从一个 web 元素到另一个,这具有不同的价值。因此,只要 BASE URI = URL,我就能找到元素并对其进行处理。

但是,如果 BASE URI 不等于 URL,我将无法找到 web 元素。

这是成功案例的示例代码:

#!/usr/bin/perl -w
use strict;
use warnings;
use Time::HiRes qw(sleep);
use Test::More "no_plan";
use Test::Exception;
use TAP::Harness;
use Data::Dumper;
use Selenium::Remote::Driver;
use Selenium::Remote::WDKeys;
my $url = 'https://www.xyz.com/';
my $sel = new Selenium::Remote::Driver('browser_name' => 'firefox',
                                              'platform' => 'VISTA');
        ok(defined $sel, 'Object loaded fine...');
        ok($sel->isa('Selenium::Remote::Driver'), '...and of right type');
         $sel->get("$url");
    is ($sel->get_title(), 'xyz','Got the right title');
        my $elem = $sel->find_element('html/body/div[1]/div/header/div[1]/div/center/div/ul/li[1]/a');
        ok(defined $elem, 'packageLink web element defined');
        $elem->click();

在这种情况下,DOM 结构显示基本 uri 与 url 相同。

现在对于不成功的情况,DOM 将基本 URI 显示为https://www.xyz.com/epg.php

在上面提到的代码中,如果我在 find element 命令之前使用 $sel->navigate( https://www.xyz.com/epg.php ) 命令,那么脚本将能够找到元素。但这只是一个静态页面点击,不会给出任何响应。

我是 HTML 相关任务的第一次用户。我将不胜感激任何帮助。

谢谢,
阿布舍克

4

0 回答 0