使用 Selenium Webdriver 测试 ZK 应用程序
Testing ZK applications with Selenium Webdriver
我最近开始研究 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>
I'm looking for the xpath of login and password input fields.
Programming language is java and I using Chromedriver.
不需要做额外的事情并使用 xpath
来定位 desire 元素,您可以使用 By.name()
定位器轻松定位 desire 元素以及以下 :-
WebElement user = driver.findElement(By.name("j_username"));
WebElement password = driver.findElement(By.name("j_password"));
我发现在使用 ZK 框架时,查找路径的最佳来源是使用 Katalon 记录器。这为每个元素提供了多个选项。示例:
for login
name=j_username
xpath=(.//*[normalize-space(text())and normalize-space(.)='User ID;'])[1]/following::input[1]
xpath=//input
我最近开始研究 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>
I'm looking for the xpath of login and password input fields. Programming language is java and I using Chromedriver.
不需要做额外的事情并使用 xpath
来定位 desire 元素,您可以使用 By.name()
定位器轻松定位 desire 元素以及以下 :-
WebElement user = driver.findElement(By.name("j_username"));
WebElement password = driver.findElement(By.name("j_password"));
我发现在使用 ZK 框架时,查找路径的最佳来源是使用 Katalon 记录器。这为每个元素提供了多个选项。示例:
for login
name=j_username
xpath=(.//*[normalize-space(text())and normalize-space(.)='User ID;'])[1]/following::input[1]
xpath=//input