【问题标题】:Testing ZK applications with Selenium Webdriver使用 Selenium Webdriver 测试 ZK 应用程序
【发布时间】:2017-02-20 16:37:45
【问题描述】:

我最近开始研究 Java 语言的 Selenium Webdriver (Chrome)。我的应用程序是使用 zk 框架开发的,因此它的 ID 是随机生成的。例如:

/div[@id='z_j0_7!cave']/form[@id='loginForm']/table[@id='z_j0_9']/tbody/tr[@id='z_j0_a!chdextr']/td/table[@id='z_j0_a']/tbody/tr[@id='z_j0_a!cave']/td[@id='z_j0_c!chdextr']/input[@id='z_j0_c']

如何找到此类元素的 xpath?

zul文件是这样的:

<h:form id="loginForm" action="j_spring_security_check" method="POST">
  <vbox sclass="login_grid z-grid" spacing="2px">
    <hbox widths="7em, 8em">
      <label value="${c:l('login')}:"/>
      <textbox  id="login"  name="j_username" value="${LoginForm.login}"       use="de.hybris.platform.cscockpit.components.login.LoginTextBox"/>
    </hbox>
    <hbox widths="7em, 8em">
      <label value="${c:l('password')}:"/> 
      <textbox  type="password" id="pw" name="j_password"  value="${LoginForm.password}"  use="de.hybris.platform.cscockpit.components.login.PasswordTextBox"/>
    </hbox>
  </vbox>       
</h:form>

在开发者模式下查看:(对于标签用户 id 及其输入字段)

<table id="z_38_a" z.type="zul.box.Box" class="z-hbox" z.zcls="z-hbox" cellpadding="0" cellspacing="0">
    <tbody>
        <tr id="z_38_a!cave" valign="top">
        <td id="z_38_b!chdextr" z.coexist="true" align="left" style="width:7em">        <span id="z_38_b" class="z-label" z.zcls="z-label">ユーザー ID:</span>
        </td>
        <td id="z_38_b!chdextr2" class="z-hbox-sep">
        </td>
        <td id="z_38_c!chdextr" z.coexist="true" align="left" style="width:8em"> <input id="z_38_c" z.type="zul.vd.Txbox" class="z-textbox" z.zcls="z-textbox" type="text" name="j_username" value="admin">
        </td>
        </tr>
    </tbody>
</table>

【问题讨论】:

  • 你能分享相关的HTML吗??
  • @SaurabhGaur.. 我已经更新了问题。
  • 告诉我你想定位哪个元素??因为我在这里看不到任何表格 HTML.. 并且还提到了您的编程语言..
  • 该页面是由 zk 创建的,因此它不是纯 html,而是具有 zul 标签,如问题所示。我正在寻找登录名和密码输入字段的 xpath。我可以粘贴在 firepath 或开发人员模式下看到的视图。
  • 编程语言是java,我用的是Chromedriver。

标签: selenium xpath selenium-webdriver automated-tests zk


【解决方案1】:

我正在寻找登录和密码输入字段的 xpath。 编程语言是java,我使用Chromedriver。

没有必要做额外的事情并使用xpath来定位欲望元素,你可以使用By.name()定位器轻松定位欲望元素以及以下:-

WebElement user = driver.findElement(By.name("j_username"));

WebElement password = driver.findElement(By.name("j_password"));

【讨论】:

  • 感谢 Saurabh!我最初尝试过这种方式,但是那个时候可能出现了错误,没有自动输入值。
【解决方案2】:

我在使用 ZK 框架时发现,查找路径的最佳来源是使用 Katalon Recorder。这为每个元素提供了多个选项。示例:

for login
name=j_username
xpath=(.//*[normalize-space(text())and normalize-space(.)='User ID;'])[1]/following::input[1]
xpath=//input

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 2015-12-10
    • 2013-07-02
    • 2013-12-11
    • 2013-02-20
    相关资源
    最近更新 更多