Selenium Webdriver - 输入 js/html 元素识别
Selenium Webdriver - Input js/html elements identification
输入元素识别有问题。
例如有两个像这样的字段...
<div class="col-xs-10">
<h4>
<a href="#" data-type="text" id="firstName" class="editable editable-click">
Alejandroff
</a>
</h4>
<h4>
<a href="#" data-type="text" id="lastName" class="editable editable-click">
Puchauff
</a>
</h4>
</div>
...点击后。名字改成这个...
<div class="col-xs-10">
<h4>
<a href="#" data-type="text" id="firstName" class="editable editable-click editable-open" style="display: none;">
Alejandroff
</a>
<span class="editable-container editable-inline" style="">
<div>
<div class="editableform-loading" style="display: none;">
</div>
<form class="form-inline editableform" style="">
<div class="control-group">
<div>
<div class="editable-input" style="position: relative;">
<input type="text" class="input-medium" style="padding-right: 24px;">
<span class="editable-clear-x">
</span>
</div>
</div>
<div class="editable-error-block help-block" style="display: none;">
</div>
</div>
</form>
</div>
</span>
</h4>
<h4>
<a href="#" data-type="text" id="lastName" class="editable editable-click" style="display: inline;">
Puchauff
</a>
</h4>
</div>
直到现在识别名称输入元素如
xpath = "//*[@id="userDetails"]/div[1]/div[1]/h4[1]/span/div/form/div/div[1]/div/input
但我知道这是不正确的,因为它使我的测试变得脆弱(万一开发人员将例如删除一个 div 测试将失败)。
谁能建议如何以另一种方式识别输入?
我没有在您提供的降价中看到 userDetails
定义,但您需要一些独特的东西来依赖。所以假设你想要这个输入:
<div class="editable-input" style="position: relative;">
<input type="text" class="input-medium" style="padding-right: 24px;">
<span class="editable-clear-x"/>
</div>
</div>
您可以使用 id="firstName"
标识符。所以尝试像
这样的东西
//div[@id="firstName"]//..//input[@class="input-medium"]
尝试
"//a[@id='firstName']//following::input[@class='input-medium']"
输入元素识别有问题。
例如有两个像这样的字段...
<div class="col-xs-10">
<h4>
<a href="#" data-type="text" id="firstName" class="editable editable-click">
Alejandroff
</a>
</h4>
<h4>
<a href="#" data-type="text" id="lastName" class="editable editable-click">
Puchauff
</a>
</h4>
</div>
...点击后。名字改成这个...
<div class="col-xs-10">
<h4>
<a href="#" data-type="text" id="firstName" class="editable editable-click editable-open" style="display: none;">
Alejandroff
</a>
<span class="editable-container editable-inline" style="">
<div>
<div class="editableform-loading" style="display: none;">
</div>
<form class="form-inline editableform" style="">
<div class="control-group">
<div>
<div class="editable-input" style="position: relative;">
<input type="text" class="input-medium" style="padding-right: 24px;">
<span class="editable-clear-x">
</span>
</div>
</div>
<div class="editable-error-block help-block" style="display: none;">
</div>
</div>
</form>
</div>
</span>
</h4>
<h4>
<a href="#" data-type="text" id="lastName" class="editable editable-click" style="display: inline;">
Puchauff
</a>
</h4>
</div>
直到现在识别名称输入元素如
xpath = "//*[@id="userDetails"]/div[1]/div[1]/h4[1]/span/div/form/div/div[1]/div/input
但我知道这是不正确的,因为它使我的测试变得脆弱(万一开发人员将例如删除一个 div 测试将失败)。
谁能建议如何以另一种方式识别输入?
我没有在您提供的降价中看到 userDetails
定义,但您需要一些独特的东西来依赖。所以假设你想要这个输入:
<div class="editable-input" style="position: relative;">
<input type="text" class="input-medium" style="padding-right: 24px;">
<span class="editable-clear-x"/>
</div>
</div>
您可以使用 id="firstName"
标识符。所以尝试像
//div[@id="firstName"]//..//input[@class="input-medium"]
尝试
"//a[@id='firstName']//following::input[@class='input-medium']"