我可以通过driver.findElement()
函数访问所有元素。
树元素是使用dhtmlx库创建的,当我尝试访问它们时,我会收到NoSuchElementException 。
我试图通过id,xpath,class,text等来访问,但是它们都不适合我。我也尝试了隐式等待和Thread.sleep()
方法,但结果是相同的。
> <tr> <td class="standartTreeImage"> <img border="0" align="absmiddle"
> style="padding: 0px; margin: 0px; width: 18px; height: 18px;"
> src="http://marduk:5543/atlas/themes/third_party/dhtmlx/dhtmlxTree/codebase/imgs/vse_datasources/plus3.gif">
> </td> <td width="20px" style="display: none;"> <img align="absmiddle"
> src="http://marduk:5543/atlas/themes/third_party/dhtmlx/dhtmlxTree/codebase/imgs/vse_datasources/iconUncheckAll.gif"
> style="width: 16px; height: 16px;"> </td> <td
> class="standartTreeImage" style="width: 18px;"> <img border="0"
> align="absmiddle" style="padding: 0px; margin: 0px; width: 18px;
> height: 18px;"
> src="http://marduk:5543/atlas/themes/third_party/dhtmlx/dhtmlxTree/codebase/imgs/vse_datasources/folderClosed.gif">
> </td> <td class="standartTreeRow" nowrap="" style="width: 100%;
> font-size: 10pt; cursor: pointer;"> <span class="standartTreeRow"
> style="padding-left: 5px; padding-right: 5px;">hr-istanbul [15]</span>
> </td> </tr>
例如,其中一个是:我需要单击第一个
td
。只有定位器是图像,但是我无法访问元素.. NoSuchElementException。element = driver.findElement(By.xpath("//img[contains(@src,'http://marduk:5543/atlas/themes/third_party/dhtmlx/dhtmlxTree/codebase/imgs/vse_datasources/plus3.gif')]"));
还试图到达最后一列元素,它也没有起作用。
element = driver.findElement(By.xpath("//*[contains(text(), 'hr-istanbul [15]')]"));
最佳答案
如果您将NoSuchElementException
作为提供的异常,则可能有以下原因:-
DOM
上,因此您应该实现WebDriverWait
以等待元素可见,如下所示:-WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement el = wait.until(ExpectedConditions.visibilityOfElementLocated(byObject));
frame
或iframe
中。如果是这样,则需要在查找以下元素之前切换该frame
或iframe
:-WebDriverWait wait = new WebDriverWait(driver, 10);
//Find frame or iframe and switch
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("your frame id or name"));
//Now find the element
WebElement el = wait.until(ExpectedConditions.visibilityOfElementLocated(byObject));
//Once all your stuff done with this frame need to switch back to default
driver.switchTo().defaultContent();
关于java - Chrome Java中的Selenium dhtmlxtree NoSuchElementException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39014067/