- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我们的应用程序中,我有一个场景可以单击特定用户的编辑图标。所以目前我正在使用以下代码:
下面是编辑按钮的html源代码:
<tbody id="defaultOverviewTable_data" class="ui-datatable-data ui-widget-content">
<tr class="ui-widget-content ui-datatable-even ui-datatable-selectable" aria-selected="false" role="row" data-rk="5910" data-ri="0">
<tr class="ui-widget-content ui-datatable-odd ui-datatable-selectable" aria-selected="false" role="row" data-rk="1" data-ri="1">
<tr class="ui-widget-content ui-datatable-even ui-datatable-selectable" aria-selected="false" role="row" data-rk="1211" data-ri="2">
<tr class="ui-widget-content ui-datatable-odd ui-datatable-selectable ui-state-hover" aria-selected="false" role="row" data-rk="14" data-ri="3">
<td class="ui-selection-column" style="width:17px;min-width:17px;max-width:17px;" role="gridcell">
<td role="gridcell">HemaSundar</td>
<td style="width:105px;min-width:105px;max-width:105px;" role="gridcell">52A-4EB-52C-294</td>
<td role="gridcell">HemaSundar</td>
<td role="gridcell">HemaSundar</td>
<td role="gridcell">Banking, Admin, System, EuropeanGate, SAP, MBS, Audit, Confidential Payments, iPhone App</td>
<td role="gridcell">
<td class="fillerColumn" style="width:0px;min-width:0px;max-width:0px;" role="gridcell"/>
<td class="iconColumn width_components_4" style="width:160px;min-width:160px;max-width:160px;" role="gridcell">
<div class="columnDiv">
<div id="defaultOverviewTable:3:j_id128" class="ui-outputpanel ui-widget">
<button id="defaultOverviewTable:3:j_id129" class="ewms-ui-icon-superEdit ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only ui-state-hover" type="submit" title="" alt="Edit" onclick="return false;PrimeFaces.addSubmitParam('defaultOverviewForm',{'edit_id':'14'})" name="defaultOverviewTable:3:j_id129" role="button" aria-disabled="false">
<span class="ui-button-text ui-c">ui-button</span>
</button>
</div>
这是我现在使用的代码:
WebElement overview = driver.findElement(By.id("defaultOverviewTable_data"));// considering the complete webtable
List<WebElement> individualRows = overview.findElements(By.tagName("tr"));//considering invidual user
for (WebElement wb: individualRows)
{
List<WebElement> indWb = wb.findElements(By.tagName("td"));// considering individual columns for individual users
System.out.println(indWb.get(1).getText());
if (indWb.get(1).getText().equalsIgnoreCase(username))// if the username equals the expected
{
List<WebElement> allButtons = wb.findElements(By.tagName("button"));// getting all the buttons of that user
for (WebElement edit: allButtons)
{
System.out.println(edit.getAttribute("title"));
if (edit.getAttribute("title").matches("Edit"))
{
edit.click();// clicking on button where title is Edit.
break;
}
}
break;
}
}
有时表中有超过 300 个用户,然后如果我想为大约位于 200 个位置的用户单击编辑。这需要更多时间。
有没有其他方法可以使用 XPATH 单击用户名列等于特定名称的编辑按钮?
注意:按钮的ID不是固定的。
最佳答案
我相信这个 XPath 应该可以实现您想要实现的目标。
//tbody[@id='defaultOverviewTable_data']/tr[./td[2][text()='HemaSundar']]//button[@alt='Edit']
注意:
td[2] 被使用是因为 XPaths 是基于 1 的,而您正在寻找第二列
您提到点击 title="Edit"
处的按钮,但您的代码片段实际上并没有那个按钮,所以我改为通过 alt
属性进行选择
XPath 可以非常强大,如果您想要更深入的解释,请告诉我
编辑:在下面添加对 XPath 的更好解释......
//tbody[@id='defaultOverviewTable_data']
这会在页面的任何位置找到 id='defaultOverviewTable_data' 的 tbody 元素。简单
/tr[./td[2][text()='HemaSundar']]
这会找到 tr
元素,它是 tbody
的直接子元素(开头只有一个 /
)。方括号部分表示它只会查找符合方括号内条件的行(./td[2][text()='HemaSundar']
),或者用英文来说,它会仅在第二个子 td
中查找包含文本“HemaSundar”的行。
//button[@alt='Edit']
最后,这将找到 tr 下方的所有按钮(不仅仅是直接子级,因为双 //
),它们的 alt
属性为“Title” .如果您愿意,可以切换 @alt 部分以匹配任何其他属性。
如果解决了您的问题,请不要忘记将此答案标记为正确:)
关于java - 单击 webTable 中特定记录的特定按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23680734/
在我们的应用程序中,我有一个场景可以单击特定用户的编辑图标。所以目前我正在使用以下代码: 下面是编辑按钮的html源代码:
WebTable 嵌入到网页中以实现自动化。它有很多字段,因此有自己的水平滚动条(滚动条特定于 WebTable,而不是整个网页)。当我尝试交互/单击当前因滚动条而隐藏的 Web 元素时,会导致 No
Listtable=driver.findElements(By.xpath("//*[@id=\"prodDetails\"]/div[2]/div[1]/div/div[2]/div/div/ta
Siebel Web 应用程序有一个包含大约 200K 用户记录的表,但一次显示 10 条记录。有一个搜索功能可以获取一个特定的用户 ID 并显示在同一表结构中。因此,当我搜索一个用户 ID 时,它只
错误是:给定的选择器 table[class='stats_table data_grid'] tbody tr [0] td [0] 无效或不会生成 WebElement。发生以下错误:Invali
我正在尝试访问一个非常静态的网络表并获取每一行的值。我收到错误,代码是: import java.util.List; import java.util.concurrent.TimeUnit; im
我很难单击 Web 表中的特定行。我的代码找到正确的行,但是当我使用 Child Item 方法时,它提示找不到对象。这是我的代码: Desc = "Record to click" If Brows
我想以 Angular 自动化 webtable。这是网站-http://demo.automationtesting.in/WebTable.html 我想捕获所有行的所有记录。这是我尝试过的- L
我正在尝试从损益表中提取数据,url 是 http://finance.yahoo.com/q/is?s=LMT+Income+Statement&annual 我无法使用 browser.table
我有以下动态网络表 (checkbox) ID_No country_code Date Time UserName FileName
我们的应用程序包含网络元素表。我的目的是检查目录是否按字母顺序排列。 WebDriver d=new FirefoxDriver(); d.get("http://www.javatpoint.com
如何在使用 Java 的 webdriver 中使用 xpath 获取 webtable 中的确切行数。使用下面的 xpath 我也可以用标题计数。我不希望计数包含标题行并获取网络表的计数。 //ta
Order total $284.96 有人可以帮我解决这个问题吗?我想在运行时捕获文本 $284.96。而且我不想使用绝对 Xpath(//table/tfoot
想要获取表 Xpath 中存在的行数,我传递的是 .//*[@id='ctl00_mainContent_Tabs_TabPanelEmploymentAdmin_EmploymentAdmin_gr
:) 我正在尝试使用 Selenium-WebDriver 和 Java 将 web 表数据写入 excel 文件。通过下面的代码,我只能打印 excel 中的最后一列数据,但不能打印整个 webta
我是一名优秀的程序员,十分优秀!