【问题标题】:selenium locate element with xpath硒定位元素与xpath
【发布时间】:2017-01-06 18:02:44
【问题描述】:

Firebug 为我要填写的元素 inputfiled 提供了这个:

<label for="form:composite:tabView:ssn">Fødselsnummer</label>

在我的 selenium 脚本中试过这个:

 WebElement velger = driver.findElement(By.xpath("//input[@id='form:composite:tabView:ssn']"));

接下来我会这样做:

  velger.sendKeys(new String[]{"27017833176"});

然后:

WebElement sokknapp = driver.findElement(By.xpath("//*[@id=\"form:composite:tabView:searchSSN\"]"));
    sokknapp.click();

点击搜索按钮。

但是,在回放期间查看浏览器时,我可以确定“发送键”不起作用,但按钮单击确实起作用(输入字段变红,因为我按下按钮进行搜索,但输入字段中没有内容)。

这有什么问题吗:

velger.sendKeys(new String[]{"27017833176"});

【问题讨论】:

  • 为什么使用标签作为输入?那很可能是你的问题。您应该始终尝试为手头的任务使用有效的 HTML 元素,即 &lt;input/&gt;
  • 您也尝试通过 id @id='form:composite:tabView:ssn 进行选择,但该标签没有 id,它具有 for 属性?
  • 显示输入元素的HTMLLabel 只是输入字段的某种名称
  • 那么你将如何编写代码 WebElement velger = driver.findElement(By.xpath("//input[@id='form:composite:tabView:ssn']"));给出你的意见?
  • 萤火虫输出:

标签: c# html selenium xpath


【解决方案1】:

Unable to locate element 可能意味着您需要等待一段时间才能处理元素:

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
var velger = wait.Until(ExpectedConditions.ElementIsVisible(By.Id("form:composite:ta‌​b‌​‌​View:ssn")));

我也不确定velger.sendKeys(new String[]{"27017833176"}); 的正确性。尝试发送简单的字符串:

velger.sendKeys("27017833176");

【讨论】:

    【解决方案2】:

    问题(或解决方案)是我在 sendkeys 之前错过了 i clear() 函数。

     velger.clear();
        velger.sendKeys("27017833176");
    

    【讨论】:

    • 这在您的情况下可能不是问题,因为您可能需要使用clear() 方法,仅当文本已存在于输入字段中时。您的问题在于不正确的内容 - new String[]{"27017833176"}
    猜你喜欢
    • 1970-01-01
    • 2020-07-23
    • 2019-09-30
    • 1970-01-01
    • 2013-08-23
    • 2016-01-17
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    相关资源
    最近更新 更多