我试图在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']")));
答案 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']")));