如何检查web元素中匹配的文本是否部分包含在<a>标记中?

2024-09-28 22:26:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下几点:

This is my text string and this next <a href='https//somelink.org/'>part</a> is only partially enclosed in a tags.

在上面的字符串中,我必须搜索“next part”,而不仅仅是“part”,所以一旦我找到“next part”,我需要检查匹配文本中是否存在任何a标记(有时没有标记)-我怎么做?你知道吗

除了我的主要问题之外,我不能让xpath在元素中找到“下一部分”。你知道吗

我试过这个:

//*[contains(text(),"next part")]

但它找不到任何东西,可能因为我在那里有空间-我怎么克服这个?你知道吗

先谢谢你


Tags: andtexthttps标记orgonlystringis
2条回答

假设这个html:

<p>This is my text string and this next <a href='https//somelink.org/'>part</a> is only partially enclosed in a tags.</p>

我们可以选择硒:

p = driver.find_element_by_xpath('//p[contains(.,"next part")]')

我们可以确定它是否部分地与regex在一个a标签中(尽管是小马托尼):

html = p.get_attribute('innerHTML')
partly_in_a = 'next part' in re.sub(r'</?a.*?>', '', html) and 'next part' not in html

对于这一点,没有纯XPath1.0解决方案,一般来说,依赖xpath来实现这样的功能是错误的。你知道吗

为此,需要使用嵌套的XPath选择器。你知道吗

//*[contains(text(), 'next') and a[contains(text(), 'part')]]

这将查询任何包含文本next的元素,然后还将检查该元素是否包含带有文本part的嵌套a元素。你知道吗

要确定是否确实存在嵌套的a标记,您需要为此编写一个方法来检查两个不同的xpath。没有简单的方法可以解决这个问题,除了评估元素,看看有什么。你知道吗

public bool DoesElementHaveNestedTag()
{
    // check for presence of locator with nested tag
    // if driver.findElements returns > 0, then nested tag locator exists
    if (driver.findElements(By.XPath("//*[contains(text(), 'next') and a[contains(text(), 'part')]]")).Count > 0) return true
    else return false
}

你可以改变这个方法来满足你的需要,但想法是一样的。无法知道WebElement是否有嵌套标记,除非您尝试使用两个XPath查找WebElement—一个检查标记,另一个不检查标记。你知道吗

相关问题 更多 >