如何使用 Java 在 Selenium 中的以下 HTML 代码中定位 WebElement?
How to locate the WebElement in following HTML code in Selenium using Java?
嗨,我有以下 HTML 的片段:
<tr rowid="0" class="addedrow rowselected datarow rowfocus">
....
<td positionindex="3" class="primary required">
<input type="text" class="editablecell" size="15">
</td>
<td positionindex="4" class="required">
<div class="select2-container editablecell" id="s2id_autogen1" style="width: 99%;" title="">
<a href="javascript:void(0)" onclick="return false;" class="select2-choice select2-default" tabindex="-1">
</a>
</div>
</td>
....
我必须在 <input type="text" class="editablecell" size="15">
文本字段中插入文本。我在 Java.
中使用 Selenium 定位这个特定的 WebElement
时遇到困难
我试过了
WebElement box = driver.findElement(By.xpath("//input[(@type='text') and
(@class='editablecell')]"));
基于答案。
注意:该元素的结构如下:
<html> ....
<body> ...
<div id=topLeveWrapper> ...
<div id=header> ...
<div id=contentFrame> ...
<div id=leftSite> ...
<div id=rightSite> ...
<div id=pageID_123456> ...
<div id=gridViewID_98765> ...
<div id=tableWrapper> ...
<div id=twHEADER> ...
<div id=twBODY> ...
<table >
<thead> ...
<tbody>
<tr rowid=0 ...>
<td positionindex="3" class ="primary required"> <input type="text" class="editablecell" size="15">
</td>
....
</tr>
......................
抛出的异常是:
Exception in thread "main" org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//input[@type='text' and @class='editablecell']"}
(Session info: chrome=..)
信息:
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
有人可以指导我吗?
谢谢
尝试以下 xpath
:
WebElement box = driver.findElement(By.xpath("//input[@type='text' and @class='editablecell']"));
您可以简单地使用这个 xpath 表达式
driver.findElement(By.xpath("//input[@class='editablecell']"))
我正在回答我自己的问题,因为我尝试了以下方法来定位元素并且效果很好。这可能不是定位元素的最佳方式,但是,由于我的 XPATH
和 Selenium
知识有限,我只能这样做。正如问题中的 HTML
结构所示,我从更高级别的元素开始,深入到我想要的元素:
driver.findElement(By
.xpath("//div[@class='fht-tbody']/table/tbody/tr[@rowid='0']/td[@positionindex='3']/input"));
我很感激在许多方面纠正了我的问题的评论,所有的评论和答案都对我有帮助并引导我找到了解决方案,我希望看到更好的方法来解决这个问题。
谢谢大家!
嗨,我有以下 HTML 的片段:
<tr rowid="0" class="addedrow rowselected datarow rowfocus">
....
<td positionindex="3" class="primary required">
<input type="text" class="editablecell" size="15">
</td>
<td positionindex="4" class="required">
<div class="select2-container editablecell" id="s2id_autogen1" style="width: 99%;" title="">
<a href="javascript:void(0)" onclick="return false;" class="select2-choice select2-default" tabindex="-1">
</a>
</div>
</td>
....
我必须在 <input type="text" class="editablecell" size="15">
文本字段中插入文本。我在 Java.
WebElement
时遇到困难
我试过了
WebElement box = driver.findElement(By.xpath("//input[(@type='text') and
(@class='editablecell')]"));
基于答案
注意:该元素的结构如下:
<html> ....
<body> ...
<div id=topLeveWrapper> ...
<div id=header> ...
<div id=contentFrame> ...
<div id=leftSite> ...
<div id=rightSite> ...
<div id=pageID_123456> ...
<div id=gridViewID_98765> ...
<div id=tableWrapper> ...
<div id=twHEADER> ...
<div id=twBODY> ...
<table >
<thead> ...
<tbody>
<tr rowid=0 ...>
<td positionindex="3" class ="primary required"> <input type="text" class="editablecell" size="15">
</td>
....
</tr>
......................
抛出的异常是:
Exception in thread "main" org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//input[@type='text' and @class='editablecell']"}
(Session info: chrome=..)
信息:
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
有人可以指导我吗?
谢谢
尝试以下 xpath
:
WebElement box = driver.findElement(By.xpath("//input[@type='text' and @class='editablecell']"));
您可以简单地使用这个 xpath 表达式
driver.findElement(By.xpath("//input[@class='editablecell']"))
我正在回答我自己的问题,因为我尝试了以下方法来定位元素并且效果很好。这可能不是定位元素的最佳方式,但是,由于我的 XPATH
和 Selenium
知识有限,我只能这样做。正如问题中的 HTML
结构所示,我从更高级别的元素开始,深入到我想要的元素:
driver.findElement(By
.xpath("//div[@class='fht-tbody']/table/tbody/tr[@rowid='0']/td[@positionindex='3']/input"));
我很感激在许多方面纠正了我的问题的评论,所有的评论和答案都对我有帮助并引导我找到了解决方案,我希望看到更好的方法来解决这个问题。
谢谢大家!