java - 如何处理 Selenium 中重复使用的元素(重复)

标签 java selenium

我无法找到作为按钮的元素。

第一个按钮

<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"/>

问题

现在,由于它们都在同一页面上,由于重复因素,我无法找到第二个按钮。唯一的区别是类型。 第一个有值=“保存并关闭” 第二个有值=“保存”

请帮我找到第二个按钮。

最佳答案

如果有两个具有相同 id 的元素,我建议您尝试使用 cssSelector 及其属性 value,这对于两个元素都是唯一的并且比 xpath 如下:-

driver.findElement(By.cssSelector("input#vendor_submit[value = 'Save']")).click();

Edited1 :- 如果您在点击时遇到元素不可见异常,您应该在点击之前使用 WebDriverWait 等待,直到元素可见且可点击下面:-

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement submit = wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("input#vendor_submit[value = 'Save']")));
submit.click();

Edited2 :- 如果不幸的是上面的方法不起作用,请尝试使用 JavascriptExecutor 进行点击,如下所示:-

WebElement el = driver.findElement(By.cssSelector("input#vendor_submit[value = 'Save']"));
((JavascriptExecutor)driver).executeScript("arguments[0].click()",  el);

关于java - 如何处理 Selenium 中重复使用的元素(重复),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39137581/

相关文章:

ruby - 如何在 selenium webdriver - ruby​​ 中自动化桌面通知

java - 找不到类型 [简单类型,类 java.lang.Class<java.lang.Object>] 的 (Map) 键反序列化器

java - RESTeasy/JAXB 的 JSON 解析错误

java - 如何使 NetLogo 5.x 中的扩展返回值 "nobody"?

java - Class.forName ("FQN") 间歇性抛出 ClassNotFoundException

python - 在 Python Selenium 中创建页面倒计时

java - Android Files : if I copy a . zip 文件到/sdcard/Download,uri 会错误

python - Linkedin 抓取工具提取技能

Python Selenium Do-While 循环

html - 为什么要从生产中的代码库中删除 QA ID