<aside class="reply-flap js-captcha">
<ul>
<li>
<h1>contact name:</h1>
<p>joel Rupp</p>
</li>
<li class="reply-tel">
<h1>
<a class="reply-tel-link" href="tel:14085551324">call</a>
<span class="reply-tel-text">call</span>
or
<a class="reply-tel-link" href="sms:14055651324">text</a>
<span class="reply-tel-text">text:</span>
</h1>
<p class="reply-tel-number">
☎ (408) 555-5678
</p>
</li>
<li class="reply-email">
<h1>reply by email:</h1>
</li>
<li>
<h1>webmail links:</h1>
<ul class="reply-emails">
<li>
<p>
</p>
</li>
<li>
<p>
</p>
</li>
<li>
<p>
</p>
</li>
<li>
<p>
</p>
</li>
</ul>
</li>
<li>
<h1>copy and paste into your email:</h1>
<p class="anonemail">cjgmz-6484327676@serv.ytutyuty.org</p>
</li>
</ul>
</aside>
我想从此代码中选择联系人姓名,但有时当名称为空时,我会得到以下(li)元素文本,即电子邮件地址,当找不到名称时,它应输出空白。 我正在使用此代码:
name = driver.switchTo().window(child_window).findElement(By.cssSelector("aside.reply-flap.js-captcha ul > li:nth-child(1) p")).getText();
我知道如果我使用jsoup我可以使用contains(联系人姓名:) 我如何在硒中使用含量?
我尝试了类似
的内容h1[contains(text()='contact name:')]
并且它根本不起作用
答案 0 :(得分:0)
要使用包含从<p>
标记下方的<h1>
标记中检索文字联系人姓名,您可以使用以下内容xpath
:
name = driver.switchTo().window(child_window).findElement(By.xpath("//aside[@class='reply-flap js-captcha']/ul/li/h1[contains(text(),'contact name:')]//following::p[1]")).getText();
注意:根据规范,:包含 伪类不能用作CSS。在这里,您可以找到详细的讨论selenium.common.exceptions.InvalidSelectorException with “span:contains('string')”