我无法找到按钮元素。
第一个按钮
<div class="col-md-12 col-sm-12 col-xs-6">
<input type="hidden" value="113" name="vendor_id"/>
<input id="vendor_submit" class="btn btn-primary mb10 SaveBtn" type="submit" value="Save & Close" name="submit"/>
我已使用此命令找到它
driver.findElement(By.xpath(".//*[@id='vendor_submit']") ).click();
第二个按钮
<div class="col-md-12 col-sm-12 col-xs-6">
<input type="hidden" value="113" name="vendor_id"/>
<input type="hidden" value="" name="vendor_hr_account_id"/>
<input id="vendor_submit" class="btn btn-primary mb10 SaveBtn" type="submit" value="Save" name="submit"/>
问题
现在因为它们都在同一页面上,由于重复因素,我无法找到第二个按钮。只有差异是类型。 1st有值=&#34; Save&amp;关闭&#34; 第二个有值=&#34;保存&#34;
请帮我找到第二个按钮。
答案 0 :(得分:1)
如果有两个具有相同ID的元素,我建议您尝试使用 function renderProxyRequest(req, res) {
// somesite.com is gzipped and also is chunked.
var options = {
protocol: 'http:',
hostname: 'somesite.com',
// passing in my current headers
headers: req.headers,
maxRedirects: 0,
path: req.url,
socketTimeout: 200000,
connectTimeout: 1800,
method: 'GET'
}
var proxyrequest = someProxyApi.request(options);
proxyrequest.on('response', function (postresponse) {
// postresponse is a buffer
//postresponse.pipe(res);
var responseFromServer = ''
postresponse.on('data', function (data) {
responseFromServer += data;
});
postresponse.on('end', function () {
// getting some jumbled string onto the browser.
res.write(responseFromServer);
res.end();
})
});
req.pipe(proxyrequest);
}
及其属性cssSelector
,这对于两者都是唯一的,并且比value
快得多,如下所示: -
xpath
Edited1 : - 如果您要点击时获取元素不可见异常,则应在使用driver.findElement(By.cssSelector("input#vendor_submit[value = 'Save']")).click();
点击之前等待,直到元素可见且可点击如下: -
WebDriverWait
Edited2 : - 如果遗憾的是上述内容不起作用,请尝试点击WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement submit = wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("input#vendor_submit[value = 'Save']")));
submit.click();
,如下所示: -
JavascriptExecutor
答案 1 :(得分:1)
您可以通过在xpath中添加值条件来区分。
所以基本上你可以在myqo@mail.com
bfta@mail.com
kjuy@mail.com
.//*[@id='vendor_submit' and @value='Save']
答案 2 :(得分:1)
您只能使用value
中的xpath
属性:
driver.findElement(By.xpath(".//input[@value='Save']")).click();
答案 3 :(得分:-1)
您可以对按钮使用绝对xpath,因为它们的位置在HTML中不同。
例如:html/body/div[1]/div[3]/form/div[2]/div[2]/div[1]/div[1]/div[3]
要在mozilla中添加插件firebug和firepath,并通过inspect元素从那里获取绝对xpath。