是否有可能使用Selenium在Wordpress Admin中自动删除用户?

时间:2019-05-20 06:56:52

标签: wordpress selenium testing

我正在尝试进行一个自动测试,包括注册一个新用户并删除它,因此该测试可以运行多次。在wp-admin / users.php上有一个表,其中每个用户的格式为“ tr”。如果我有用户的电子邮件,可以获取用户ID(特别是号码)吗?

现在,我正在尝试列出Web元素列表,将其转换为字符串(getAttribute(“ outerHTML”),并将其大小减小为1个元素,其中包含电子邮件。但是我不知道如何解构字符串,这样我就可以获取所需的ID号。

List<WebElement> trTags = driver.findElements(By.tagName("tr"));
List<String> users = trTags.stream().filter(item -> item.isDisplayed()).map(item->item.getAttribute("outerHTML")).collect(Collectors.toList());
users.removeIf(elem -> !elem.contains("test@test.com"));
users.stream().forEach(elem -> System.out.println(elem));

结果就是这样

<tr id="user-20">
<th scope="row" class="check-column">
<label class="screen-reader-text" for="user_20">Select *username*</label>
<input type="checkbox" name="users[]" id="user_20" class="subscriber" value="20">
</th>
<td class="username column-username has-row-actions column-primary" data-colname="Username">
<img alt="" src="*imageurl" class="avatar avatar-32 " height="32" width="32" style="height:32px;width:32px">
 <strong><a href="edituserurlinwpadmin">*username*</a></strong><br><div class="row-actions">
 <span class="edit"><a href="*edituserurlinwpadmin*">Edit</a> | </span><span class="delete">
 <a class="submitdelete" href="users.php?action=delete&amp;user=20&amp;_wpnonce=091d3cc8bb">Delete</a> | </span><span class="view">
 <a href="viewuserinwpadmin" aria-label="View posts by *user's name*">View</a> </span></div>
 <button type="button" class="toggle-row"><span class="screen-reader-text">Show more details</span> </button> </td>
 <td class="name column-name" data-colname="Name">*user's firstname & lastname*</td>
 <td class="email column-email" data-colname="Email"><a href="mailto:test@test.com">test@test.com</a></td>
 <td class="role column-role" data-colname="Role">Subscriber</td><td class="posts column-posts num" data-colname="Posts">0</td>
 <td class="heateor_ss_delete_profile_data column-heateor_ss_delete_profile_data" data-colname="Delete Social Profile">
 <a href="javascript:void(0)" title="Click to delete social profile data" alt="Click to delete social profile data" onclick="javascript:heateorSsDeleteSocialProfile(this, 20)">Delete</a></td></tr>

1 个答案:

答案 0 :(得分:1)

您可以直接编写与您已经拥有的电子邮件ID 相匹配的xpath,并可以获得 ID

xpath

//a[text()='test@test.com']/preceding-sibling::input  

如果要使其更具动态性,可以采用以下方法:

//a[text()='"+emailId+"']/preceding-sibling::input  

其中 emailId 将是一个字符串,其中包含您所需的电子邮件ID。

现在,您可以像这样编写简单的Java代码:

String userId = driver.findElement(By.xpath("//a[text()='test@test.com']/preceding-sibling::input")]/preceding-sibling::input")).getAttribute("id");
System.out.println(userId);  

您可以仅更改xpath以进行动态使用。

希望这会有所帮助。

更新:

由于thpreceding-sibling中的anchor tag,因此您得到了正确的结果。

//a[text()='test@test.com']/preceding-sibling::th/input