不能连续改变价值

时间:2013-09-03 10:11:38

标签: c# selenium-webdriver watir

测试应该:1。点击图标'编辑'行(表格fot密码更改为红外线); 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.

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

1 个答案:

答案 0 :(得分: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”));
  6. 另外你应该看看css&第一个元素的xpath选择。它使查找元素更加清晰。

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

    driver.FindElement(By.CssSelector("img[title='edit']");