我无法找到日期选择器的元素。我尝试了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
答案 0 :(得分:3)
id
值看起来动态生成,我会使用ng-model
代替:
driver.findElement(By.cssSelector("[ng-model='vendor.companyStartedDate']"));
将可读性提高作为奖励。
并且,看看是否需要wait until the presence of the element。