我有一个快速的Java表问题。我有一个表,包含4列和X行。列如下:引号,名称,日期和添加按钮。 我在尝试查找表格中的特定名称后,点击找到该名称的行上的添加按钮。
示例:
Quote# Name Date Add-Button
100001 John Doe1 01/01/1980 [Add]
100002 John Doe2 01/01/1981 [Add]
100003 John Doe3 01/01/1982 [Add]
100004 John Doe4 01/01/1983 [Add]
我已编写以下代码,以确定表中是否有某个名称:
public List<String> getInternetQuoteNames()
{
List<WebElement> webName = sh.getElements(newInternetQuotesNames);
List<String> stringName = new ArrayList<>();
for(WebElement name : webName)
stringName.add(name.getText());
return stringName;
}
我现在正在尝试编写另一种方法来点击正确的[添加]按钮,但我不确定如何访问正确的行,因为我对表不满意。我到目前为止写的是:
public void addInternetQuoteByName(String name)
{
List<String> listOfNames = getInternetQuoteNames();
if(listOfNames.contains(name))
{
// Find row of provided name
// Click on [Add]-button on that row
}
}
表格的HTML代码如下:
<tbody>
<tr>
<td>100040365822</td>
<td>Test06232016 Test033929</td>
<td>06/23/2016</td>
<td>
<a id="assignQuoteLink_100040365822" class="add_from_pqs" href="#">Add Quote</a>
</td>
</tr>
<tr class="alt">
<td>100040365772</td>
<td>Test06232016 Test033723</td>
<td>06/23/2016</td>
<td>
<a id="assignQuoteLink_100040365772" class="add_from_pqs" href="#">Add Quote</a>
</td>
</tr>
<tr>
<tr class="alt">
<tr>
<tr class="alt">
</tbody>
有关如何完成该方法并点击右侧行[添加]按钮的任何提示,我们非常感谢!
答案 0 :(得分:4)
尝试这种方法:
driver.findElements(By.xpath("table xpath")).size()
<强>代码强>
public static void addInternetQuoteByName(String Name)
{
WebDriver driver = new FirefoxDriver();
int rowCount = driver.findElements(By.xpath("xpath of table")).size();
for (int i = 1; i <= rowCount; i++)
{
String sCellValue = driver.findElement(By.xpath("XPATH Of Name row")).getText();
if (sCellValue.equalsIgnoreCase(Name))
{
driver.findElement(By.xpath("xpath of add")).click();
}
}
driver.close();
}
名称和添加按钮的xpath必须传递为使tr [i]动态化
例如:.//*[@id='content']/table/tbody/tr["+i+"]/td[2]
由于我不确定名称和添加按钮列的确切xpath,我提供了一个示例。
如果您有问题,请告诉我。
答案 1 :(得分:1)
这是一个完成你要求的功能。它抓取所有TR,在第二个单元格(TD)中查找名称,如果找到,则单击&#34;添加引用&#34;该行的链接。
conda create -n env_full python=3
答案 2 :(得分:0)
这个要求听起来很像这篇文章。 http://www.testautomationguru.com/selenium-webdriver-finding-webelements-using-map/
基本上,您需要插入一些javascript来创建结构,如下所示。
{
"John Doe1": {
"Add" : []
},
"John Doe2": {
"Add" : []
}
}
然后返回返回的结果并输入caste到Map。
Map < String, WebElement >> nameMap = ((JavascriptExecutor) driver).executeScript(queryString);
然后你的用法就像
nameMap.get("John Doe3").get("Add").click();