硒选择并点击正确的链接
本文关键字:链接 选择 | 更新日期: 2023-09-27 18:26:31
请不要厌倦为相同类型的数据连续回答我的问题。我的应用程序使用Selenium和c#。这里还有一个网页,内容如下:
Description App Name Information
Some Desc1 App1 Some Info
Some Desc2 App2 Some Info
Some Desc3 App2 Some Info
Some Desc4 App3 Some Info
Some Desc5 App4 Some Info
正如我在前面的问题中所说,在我的应用程序中,用户输入自己选择的应用程序名称。我把这个appname存储在一个变量中。我需要做的是,我希望selenium搜索该应用程序名称,它必须单击相应的描述。
一个示例场景是:如果用户输入APP2,那么selenium应该搜索应用程序名称"APP2",然后首先单击Some Desc2,然后在一段时间后单击Some Desc3。供您参考,所有"some Desc"链接都没有类名,没有id,并且具有相同的标记名。
试试这个:
driver.findElement(By.id("table-id"));
List<WebElement> rows = table.findElements(By.tagName("tr"));
for (WebElement row : rows) {
List<WebElemebt> cells = row.findElements(By.tagName("td"));
if (cells[1].getText().equals("AppNameYouWantToFind")) {
cells[0].click();
}
}
我希望你能理解这里发生了什么,但无论如何我都会描述一下。
首先,您可以找到具有相关数据的table
。然后在该表中找到每个rows
,形成一个webelemebt列表。然后,为这些行中的每一行创建一个所有cells
的列表。由于您的表布局,您知道App Name
数据位于列表中的第二个单元格"index=[1]"中。因此,在那里对您想要的搜索词进行比较——如果匹配,请单击继续的cell
。
恐怕这是在Java中,您必须将其转换为c#。
更新的答案
driver.findElement(By.id("table-id"));
List<WebElement> rows = table.findElements(By.tagName("tr")); //get list to know how many times to loop
for (int i=0; i<rows.length(); i++) {
rows = table.findElements(By.tagName("tr")); //this is required as you'll be 'refreshing' the list to avoid 'stale element exceptions' after going back
List<WebElemebt> cells = rows[i].findElements(By.tagName("td"));
if (cells[1].getText().equals("AppNameYouWantToFind")) {
cells[0].click();
//do what you need to do on the new page
driver.navigate.back();
}
}