如何通过Selenium中的HTML查找文本为My Name的元素

时间:2018-07-29 23:57:26

标签: node.js selenium selenium-webdriver xpath css-selectors

我试图在node.js中将selenium-webdriver和mocha一起使用来查找元素。我目前的状况还不错,但是对于特定的Google网页,其HTML格式不正确(很多标签未关闭)存在问题。硒不喜欢这样。这是Google在您的个人资料上点击登录页面的标准方法。这是一个HTML示例。如何等待页面加载我的名字并单击它?似乎关闭的唯一标签是li。

<div class="vdE7Oc f3GIQ"><p role="presentation" 
class="wpW1cb">My Name<p class="uRhzae" role="heading" 
aria-level="2" data-email="myemail@example.com"
>myemail@example.com</div></div></li>

以下是我尝试过的事情清单(包括其他事项):

var profile = await driver.wait(until.elementLocated(By.partialLinkText("My Name")));
var profile = await driver.findElement(By.partialLinkText("My"));
var profile = await driver.findElement(By.xpath("//*[contains(., 'My Name')]"));
var profile = await driver.wait(until.elementLocated(By.css("p[email='myemail@example.com']")));
var profile = await driver.wait(until.elementLocated(By.xpath("//*[contains(., 'My Name')]")));
var profile = await driver.wait(until.elementLocated(By.partialLinkText("My")));
var profile = await driver.wait(until.elementLocated(By.xpath("//p[@email='myemail@example.com']")));

1 个答案:

答案 0 :(得分:2)

根据您共享的HTML来查找文本为 myemail@example.com 的元素,您可以使用以下解决方案:

var profile = await driver.wait(until.elementLocated(By.xpath("//div//p[@role='heading' and @data-email='myemail@example.com']")));