如何扫描页面以查找输入类型元素并逐个单击所有元素?

spr*_*nwn 1 selenium robotframework selenium-webdriver

我创建了一个检查以下内容的测试:
您在远程 Windows 客户端(Firefox/Chrome 或 Edge 使用它们的webdriverselenium服务器)上打开浏览器,浏览器打开一个 URL,Facebook 或 Paypal 或其他网络钓鱼 URL。
它会根据其转到我选择的元素(电子邮件/用户名/密码)xpath,单击它,并根据我的网络钓鱼签名检查该站点是否被阻止或允许。
现在,此测试有效,但如果我想稍后添加更多站点进行测试,则必须为每个新站点创建新测试或更改xpath我拥有的测试。这不是一种非常可靠的测试方法(也xpaths可以在网页上更改)。

我想以更可重用的格式进行相同的测试。
我想做的测试是:

  • 打开一个网页。
  • 扫描任何表单或输入类型字段。
  • 单击一个接一个找到的每个元素,然后等待对每种元素的判断(重定向到阻止页面或单击后页面保持打开状态)。

机器人中是否有任何关键字知道如何处理?
想知道 Robot Framework 是否有类似于已经完成的东西。

小智 5

您可以尝试使用Get WebElements带有 xpath 的Selenium 解析所有输入的网页//input- 这将返回所有元素的列表,然后您可以检查该元素是否未隐藏并单击/填充它。我建议将数据驱动的方法与机器人框架的测试模板一起使用,例如

*** Settings ***
    Library            Selenium(or any other)
    Test Template      Scan input elements test

*** Keywords ***
Scan input elements test
   [Arguments]    ${url}    ${selector}    ${whatever}

    Open webpage   ${url}
    ${inputs}=    Get WebElements
    FOR     ${element}    IN     @{inputs}
         Click Element    ${element}
         # or do something else
    END
    Assert or wait for smth    ${whatever}

*** Test Cases ***
    Scan input elements test    facebook.com    //input    blocked
Run Code Online (Sandbox Code Playgroud)

这里Run Keyword And Return Status也很有用,所以如果输入不可点击等,您的测试不会失败。但是这样的测试真的很不稳定,因为有超过 9000 种方法可以构建 HTML 表单:)