编辑::页面加载后几秒钟,cookies警告被添加到页面上(我之前没有注意到,当然,我很长一段时间在浏览器中手动接受了它)时间之前)...我想这会使之前发生的一切无效。所以我只是在get()之后添加了wait,现在一切都很好了。
在第一个元素后的stale element reference: element is not attached to the page document
处发现的WebElement上循环时,出现 find_elements()
错误。
尝试运行此简单脚本
use strict;
use warnings;
use feature qw/say/;
use Selenium::Chrome;
my $driver = Selenium::Chrome->new( binary => 'C:/path-to/chromedriver.exe' );
$driver->get( 'https://...' );
my $pdf_links = $driver->find_elements('//a[@class="file-link"]');
for my $link (@$pdf_links) {
my $filename = $driver->find_child_element($link, "./span")->get_text();
say $filename;
}
我得到这个错误:
first-file-name.pdf
Error while executing command: stale element reference: element is not attached to the page document
(Session info: chrome=75.0.3770.100)
(Driver info: chromedriver=75.0.3770.90 (a6dcaf7e3ec6f70a194cc25e8149475c6590e025-refs/branch-heads/3770@{#1003})
,platform=Windows NT 10.0.18362 x86_64) at C:/<path>/perl/perl/site/lib/Selenium/Remote/Driver.pm line 403.
at C:/<path>/perl/perl/site/lib/Selenium/Remote/Driver.pm line 353.
@$pdf_links
有160多个元素,但是find_child_element()
仅在第一次迭代中起作用。
答案 0 :(得分:1)
А页面加载几秒钟后,“ cookies warning”被添加到页面中(我之前没有注意到,当然,很久以前我在浏览器中手动接受了它),...,我想,这会使之前发生的一切失效。因此,我只是在get()
之后添加了一个等待,现在一切都很好了。