0

测试应该: 1.单击图标“编辑”行(出现密码更改表格);2. 输入新的“密码”;3. 点击表格中的“确定”按钮。它在 Watir + Ruby 上的工作原理:

browser.img(:title, "Edit").click #fire_event 'onclick'
browser.text_field(:id,"ID").set 'password' # Set new password
browser.div(:id,"ID").click # Save a password

并且密码已更改-没关系。但是当我尝试在 Selenium Webdriver + C# 上做同样的事情时,密码并没有改变。代码:

driver.FindElement(By.Id(...)).FindElements(By.TagName("img"))[0].Click(); // thats Edit button
driver.FindElement(By.Id(...)).SendKeys("1"); // Typed new password in row
driver.FindElement(By.Id(...)).Click(); // thats 'OK' button.

伙计们我做错了什么?我希望能得到你的帮助。

4

1 回答 1

0

如果文本框和按钮都具有相同的 ID,那就是你的问题。每个页面有多个 ID 实例是不恰当的。即使元素类型不同,也不应该发生。Chrome 假定为正确的 html,因此当您搜索 id 为“ID”的元素时,它会抓取第一个实例。这是解决该问题的方法:

  1. 在 Chrome 中打开页面
  2. 右键单击并在要查找的元素上“检查元素”(具有重复 ID 的元素之一)
  3. 双击显示的 id 并删除 id='ID' 部分并按 Enter
  4. 再次右键单击该 html 元素并复制 xpath
  5. 将选择器更改为 driver.FindElement(By.XPath("theXpathChromeReturns"));

您还应该检查第一个元素的 css 和 xpath 选择。它使查找元素更加清晰。

driver.FindElements(By.CssSelector("#myId img")[0].Click();

或者

driver.FindElement(By.CssSelector("img[title='edit']");
于 2013-09-04T22:32:53.017 回答