gpt4 book ai didi

perl - 如何使用 selenium webdriver 在 perl 的警报/提示/对话框中获取文本?

转载 作者:行者123 更新时间:2023-12-05 00:49:40 28 4
gpt4 key购买 nike

我想在下图中得到一个字符串。它位于警报、提示或对话框中。我的代码是用 Perl 编写的,我正在使用 Selenium Webdriver 浏览页面。

Image shows the alert and the Url I want from it

到目前为止我所取得的成就:

  • 找到与 selenium 的链接并单击它
  • 等待警报出现
  • 从警报中获取字符串,但不是文本字段中的字符串

  • 代码
    my $copy_elem = wait_until {      
    $d->find_element_by_id('clipboard-link');
    };
    $copy_elem->click;

    select undef, undef, undef, 8.00;

    my $alert = wait_until {
    $d->get_alert_text;
    };
    $alert输出是“复制链接”

    所以我想要的文本在警报的文本字段中。使用 get_alert_text 我只得到警报字符串,而不是文本字段内容。我在网上搜索答案,看到人们使用窗口句柄切换到警报。我试图在 Selenium Webdriver 的文档中寻找类似的功能:

    CPAN Selenium Webdriver Docu with list of functions

    我尝试获取窗口句柄并将它们加载到数组中,但它没有获得警报的第二个窗口句柄。 get_current_window_handle 也不起作用。我使用 phantomjs 和 chrome 作为浏览器。据我所知没有 driver.switchto().alert();对于 perl。

    最佳答案

    一种方法是覆盖 prompt在页面中使用脚本注入(inject)函数:

    # override the prompt function
    $d->execute_script('window.prompt=function(message, input){window.last_prompt = {message: message, input: input}};');

    # trigger a prompt
    select undef, undef, undef, 8.00;

    # get the prompt default input
    my $input = $d->execute_script('return window.last_prompt.input;');

    关于perl - 如何使用 selenium webdriver 在 perl 的警报/提示/对话框中获取文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47220363/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com