2015-10-20 83 views
0

为了确保用户在此网页上成功通过验证,我正在编写测试,他/她的登录ID将被显示 - 下面是使用firepath的HTML,当用户成功时验证。使用Perl在Selenium中搜索文本

<a href="#"> 
[email protected] 
::after 
</a> 

下面是用HTML页面的源

<a href="#"> 
[email protected] 
</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,我不想使用点击。

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

非常感谢您提供任何提示。

+0

您是否试过'$ ret = $ driver-> find_element('user2 @ user2','link_text');'? – JeffC

+1

您正在测试'href'属性的值是否包含''user2“'。它没有。相反,测试'a'元素内的'text'。 – reinierpost

+0

@JeffC,在WWW :: Selenium文档中,没有'find_element'函数,但有一个'get_attribute'不起作用。 – BioRod

回答

0

对不起,因为我不知道Perl。

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

使用您的点击内的代码并将定位器设置为该路径。

编辑试试这个:

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

然后该元素的使用gettext()。

这可能是在Perl:

$username= $mylocator->get_text(); 
0

经过认真审查WWW ::硒模块的文档,有我忽视的功能,下面是代码和功能解决了我的问题。

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