如何使用Selenium::Remote::Driver Perl包通过Open Windows上传测试中的文件



以下是附加项目符号:我可以用以下代码获得我的"按钮":

 $elem = $driver->find_element('//*[@id="file_uploader"]/div/div/div/div[1]/div[1]/div/span');
     $driver->mouse_move_to_location(element => $elem); # xoffset => x, yoffset => y
     $driver->click_ok('LEFT');
     $driver->pause(3000);

但在那之后,我在出现的"打开的窗口"中什么都找不到。如何上传文件?

附言:这是我的开发工具的截图。

蓝色

提前感谢!

Selenium无法处理操作系统对话框。因此,没有办法处理这个对话框。这意味着您需要在不打开文件的情况下上传文件。幸运的是,Selenium允许用户向文件输入发送文件路径。这将上载文件。

为了使它发挥作用,您首先需要找到输入元素而不是按钮。它看起来像:

<input type='file'>

一旦找到这个元素,就可以将文件路径发送到它,就像将任何文本发送到文本字段一样。我不知道如何在perl中做到这一点,但在Python中,你可以这样实现:

element.send_keys('path/to/file')

您可能知道perl的等价物是什么。

事实上,它更具体。我有两种方法在我的网络应用程序中上传文件:

第一个用户可以使用"选择文件"按钮。

第二,您可以直接删除文件。第二种方法是,在Selenium::Remote::Driver包中使用"upload_file"方法,这是可能的。我这样做:

my $fname = "D:/dev/tests/selenium/phantomjs-2.1.1-windows.zip";
my $remote_fname = $driver->upload_file( $fname );
    my $element = $driver->find_element( '//*[@id="file_uploader"]/div/div/div/div[1]/div[2]/input[@class="dx-fileuploader-input"]' );
    $element->send_keys( $remote_fname );

但不是用我的"按钮"。

这怎么可能?我在这里转发给你更多的截图:

红色"按钮"和蓝色"放置文件"中的

最新更新