Selenium Webdriver中无法找到元素错误

时间:2015-04-08 12:48:39

标签: selenium

我使用的是最新的webdriver版本。下面是我编写的webdriver代码

Thread.sleep(5000);
       WebElement providerprofile = driver.findElement(By.xpath("//div[@class='provider-namebox']//a[@href='#provider-detail?anthony-firilas&U2FsdGVkX181p0qdh48AoV8B1OV7voTYsNsYgSWYsg0=&Ashley River Family Physicians@South Carolina@@@@@@@@@28.6667@77.2167&standardsearch']"));
 providerprofile.click();

以下是HTML代码段

<div class="col-sm-12 inner-provider clearfix">
<a href="#provider-detail?anthony--firilas&U2FsdGVkX181p0qdh48AoV8B1OV7voTYsNsYgSWYsg0=&Ashley River Family Physicians@South Carolina@@@@@@@@@28.6667@77.2167&standardsearch">
<span class="col-xs-5 col-sm-12 image-box">
<img class="img-circle" alt="" src="images/provider-image.png"/>
</span>
</a>
<div class="col-xs-7 col-sm-12 mobile-showBox">
<div class="provider-namebox">
<a href="#provider-detail?anthony-firilas&U2FsdGVkX181p0qdh48AoV8B1OV7voTYsNsYgSWYsg0=&Ashley River Family Physicians@South Carolina@@@@@@@@@28.6667@77.2167&standardsearch">
<span class="nowrap">
<h2>Anthony </h2>
</span>
<span class="nowrap">
<h2>Firilas</h2>
, MD
</span>
</a>
<h3> N/A </h3>
</div>

现在当我运行上面的webdriver代码时,它给出了错误 "Unable to locate element "

我用于上述HTML的Xpath://div[@class='provider-namebox']//a[@href='#provider-detail?anthony-firilas&U2FsdGVkX181p0qdh48AoV8B1OV7voTYsNsYgSWYsg0=&Ashley River Family Physicians@South Carolina@@@@@@@@@28.6667@77.2167&standardsearch']

即使使用相同的xpath,它也会在firebug和firepath中识别

3 个答案:

答案 0 :(得分:0)

只需使用以下代码来识别元素。

WebElement providerprofile = driver.findElement(By.xpath("//div[@class='provider-namebox']/a"));

答案 1 :(得分:0)

由于错误是“无法定位元素”,因此元素可能未在指定的时间段内加载。此外,如果href是唯一的而不是“动态”,则只能搜索href。请尝试以下代码:

WebDriverWait wait = new WebDriverWait(_driver, 60);        
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[@href='#provider-detail?anthony-firilas&U2FsdGVkX181p0qdh48AoV8B1OV7voTYsNsYgSWYsg0=&Ashley River Family Physicians@South Carolina@@@@@@@@@28.6667@77.2167&standardsearch']")));

使用“wait”命令,测试将等待60秒,然后退出并出现错误。一旦元素被定位,它将立即继续。如果仍然收到相同的错误,则href可能不是唯一的。也许你可以尝试按类名...

答案 2 :(得分:-1)

问题是在我使用webdriver执行搜索选项后,webdriver无法找到它正在发生的元素,因为我的xpath不知道因为动态值即将到来而且它们的xpath与我的相同xpath所以我使用前向兄弟方法来识别要识别元素的特定元素。