无法找到日期选择器的元素

时间:2016-07-26 05:59:16

标签: java selenium xpath selenium-webdriver

我无法找到日期选择器的元素。我尝试了CssSelector和xpath以及所有内容。以下是我试过的代码。

代码:

WebElement dateWidget = driver.findElement(By.xpath(".//*[@id='dp1469511990123']"));
        List<WebElement> columns=dateWidget.findElements(By.tagName("td"));

        for (WebElement cell: columns)
        {
             if (cell.getText().equals("21"))
             {
              cell.findElement(By.linkText("21")).click();
              break;
             }
        }

这是HTML代码。

HTML:

<input id="dp1469511990123" class="ng-pristine ng-untouched ng-valid hasDatepicker ng-not-empty" type="text" ng-disabled="input.p1Edit==0" ng-model="vendor.companyStartedDate" ui-date="comp_st_date" disabled="disabled"/>

以下是错误:

  

org.openqa.selenium.NoSuchElementException:无法找到元素:&gt; {&#34;方法&#34;:&#34; xpath&#34;,&#34;选择器&#34;:&#34; .//*[@id='dp1469511990123']"}   命令持续时间或超时:10.07秒   有关此错误的文档,请访问:&gt; http://seleniumhq.org/exceptions/no_such_element.html   构建信息:版本:&#39; 2.53.0&#39;,修订版:&gt;&#39; 35ae25b1534ae328c771e0856c93e187490ca824&#39;,时间:&#39; 2016-03-15 10:43:46&#39;   系统信息:主机:&#39; user-PC&#39;,ip:&#39; 192.168.1.52&#39;,os.name:&#39; Windows 7&#39;,&gt; os.arch: &#39; amd64&#39;,os.version:&#39; 6.1&#39;,java.version:&#39; 1.8.0_51&#39;   驱动程序信息:org.openqa.selenium.firefox.FirefoxDriver

1 个答案:

答案 0 :(得分:3)

id值看起来动态生成,我会使用ng-model代替:

driver.findElement(By.cssSelector("[ng-model='vendor.companyStartedDate']"));

将可读性提高作为奖励。

并且,看看是否需要wait until the presence of the element