java - 如果所有元素 xpath 都相同,如何区分元素

标签 java xml selenium xpath selenium-webdriver

使用selenium web驱动程序来自动化测试,在我们的应用程序元素(3个输入字段)xpath是相同的,所以我无法传递这三个字段中的值,请找到html

<div class="form-row">
<div class="label-column">
Pan No
</div>
<div class="ctrl-column">
<input class="input-txt" type="text" maxlength="50" data-bind="value: Pan No,qtipValMessage: Pan No" title="">
</div>
</div>
<div class="form-row">
<div class="label-column"> area code </div>
<div class="ctrl-column">
<input class="input-txt" type="text" maxlength="50" data-bind="value: area code,  qtipValMessage: area code" title="">
</div>
</div>
<div class="form-row">
<div class="label-column"> Serial # </div>
<div class="ctrl-column">
<input class="input-txt" type="text" maxlength="50" data-bind="value: Serial #" title="">
</div>

上面的 html 有三个输入字段(Pan No、区号和序列号) 我想通过我们的 java 代码(selenium web 驱动程序)传递一个值

driver.findElement(By.cssSelector("input.input-txt")).sendKeys(
            "acdpp6042c);

如果我执行上面的一个,它会填充 pan no 字段,这不是问题,但其余字段无法传递值,因为这三个元素标签是相同的, 请建议如何为其余字段生成 xpath

来自开发者工具(chrome)的xpath是:

//*[@id="divInfo"]/table/tbody/tr/td/div[2]/table/tbody/tr/td[1]/div/div[2]/div[2]/input

以上内容对于其余字段来说是常见的

最佳答案

如果您更喜欢cssSelectors,则以下内容将起作用。

css = input[data-bind*='Pan']

css = input[data-bind*='area code']

css = input[data-bind*='Serial']

符号*与xpath中的包含相同。

关于java - 如果所有元素 xpath 都相同,如何区分元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21729218/

相关文章:

python - 尝试替代 xpath,否则继续

java - 当您不知道文件所在位置时,如何读取文件?

html - SVG 多边形的 CSS 鼠标悬停

regex - 如何在 CSS Selenium 选择器代码之间使用正则表达式?

正则表达式的首位或末位不能有数字,并且长度必须为 6-20 个字符

android - 如何在 ButterKnife 中绑定(bind) XML fragment ?

java - 如何在 selenium webdriver 的文本字段中一个一个地输入字符?

java - 客户端-服务器应用程序文件传输

java - java中解析字符串时出现outOfBoundException

java - 如何读取/更新存储在 map 内的值,该 map 随后位于 Cloud Firestore 的数组内?