【问题标题】:Searching for text in Selenium using Perl使用 Perl 在 Selenium 中搜索文本
【发布时间】:2015-10-22 01:18:44
【问题描述】:

为了确保用户在我正在为其编写测试的网页上成功通过身份验证,将显示他/她的登录 ID -- 以下是用户成功通过身份验证时使用 firepath 的 HTML。

<a href="#">
 user2@user2
 ::after
</a>

以下是使用页面源的 HTML

<a href="#">
 user2@store2
</a>

我之所以发布两个 HTML 来源,是因为我不太确定哪个来源有助于故障排除。我得到的错误是

Timed out after 30000ms

下面是我正在使用的 Perl 代码。我正在使用 WWW::Selenium 模块。

my $locator = q{//a[contains(@href, "user2")]};
my $ret = $sel->wait_for_text_present($locator, 2000);

以下部分有效,但我想查看用户的登录 ID,我不想使用 click。

ret = $sel->click('//a[contains(@href,"#")]');

提前感谢您的任何提示。

【问题讨论】:

  • 你试过$ret = $driver-&gt;find_element('user2@user2', 'link_text');吗?
  • 您正在测试href 属性的值是否包含"user2"。它没有。改为测试 a 元素内的 text
  • @JeffC,在 WWW::Selenium 文档中,没有 find_element 函数,但有一个 get_attribute 不起作用。
  • 抱歉,我不熟悉 WWW::Selenium,所以我在没有查看文档的情况下重新调整了下面的答案。但是...我确实查看了文档,发现其中一个定位器是链接文本,例如link=textPattern:Select the link (anchor) element which contains text matching the specified pattern. link=The link text。您应该可以使用此方法查找链接文本“user2@user2”。

标签: perl selenium


【解决方案1】:

抱歉,我不懂 Perl。

在 java 中,我会使用定位器上的 getText() 来获取您要查找的用户名。

使用单击中的代码并将定位器设置为该路径。

编辑试试这个:

$mylocator= $driver->find_element('//a[contains(@href,"#")]');

然后在该元素上使用 getText()。

这可能在 Perl 中:

$username= $mylocator->get_text();

【讨论】:

    【解决方案2】:

    在仔细查看了 WWW::Selenium 的模块文档后,我忽略了一个函数,下面是解决我的问题的代码和函数。

    $sel->is_text_present("user2\@store2");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-24
      • 2020-08-30
      • 1970-01-01
      • 1970-01-01
      • 2018-01-23
      • 1970-01-01
      相关资源
      最近更新 更多