【问题标题】:how to stop selenium c# overwriting textbox after clicking add button?单击添加按钮后如何停止 selenium c# 覆盖文本框?
【发布时间】:2017-04-10 22:07:56
【问题描述】:

我有一个文本框。当我单击“添加”按钮时,我将密钥发送到文本框并且我想添加另一行,所以我再次单击“添加”按钮,但它添加了另一个文本框来输入值,但它总是覆盖第一行. // 点击添加行按钮 // ngDriver.FindElement(By.XPath("//div[1]/div[3]/form/div/fieldset[2]/div/div[4]/button")).Click();

        // Selecting Item from dropdown

        //  SelectElement se3 = new SelectElement(ngDriver.FindElement(NgBy.Model("line")));
        // se3.SelectByValue("string:A");

【问题讨论】:

  • 看来您没有编写正确的 xpath。您能否分享 html 代码并分享屏幕截图以正确解释您的要求?
  • 您好,感谢您的帮助。抱歉我不能分享截图。每次单击“添加”按钮时,都会添加一个新的文本框来添加项目。例如 - 我添加了一个“项目 1”,然后单击“添加”按钮,这将带来一个新的文本框来添加“项目 2”。但取而代之的是“Item1”将被“Item 2”替换。
  • 如果您使用浏览器的默认值编写 xpath,您的自动化将不断中断。开发人员在该区域添加 div 标签的 1 项更改会杀死它。您应该查看w3schools.com/xml/xpath_intro.asp

标签: c# selenium


【解决方案1】:

假设该文本框中有一个分区并且添加按钮可用。

假设我需要点击添加按钮 2 次,然后尝试以下代码

IWebElement division = driver.FindElement(By.XPath("//div[@id='form-info']"));

division.FindElement(By.TagName("input")).SendKeys("text to enter");
for (int i = 0; i < 2; i++)
{
     division.FindElement(By.TagName("button")).Click();
     Thread.Sleep(2000);
     division = driver.FindElement(By.XPath("//div[@id='form-info']"));
     Thread.Sleep(2000);
     division.FindElements(By.TagName("input"))[i+1].SendKeys("text to enter");
}

根据您的 Xpath 结构更改此项。这只是一个例子。因为在没有看到 Xpath 的情况下,要解释您的期望并不那么容易

【讨论】:

    猜你喜欢
    • 2014-02-27
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 2021-11-17
    • 2012-12-06
    • 1970-01-01
    相关资源
    最近更新 更多