【问题标题】:I want to verify if the word "anything" is in bold or not我想验证“任何东西”这个词是否是粗体
【发布时间】:2017-11-03 12:22:23
【问题描述】:

网站是enter link description here

当你下楼时,你会发现一些帖子,所以我想验证其中写的“任何东西”是否以粗体显示或不使用 Selenium,最好是 Python!

我面临的问题是因为整个文本不是粗体,因此当我使用属性时

element1= driver.find_element_by_xpath(".//*[@id='post-2662']/div/p")

a=element1.value_of_css_property('font-weight')

它给了我 400,但是,我只想查找“任何”是否为粗体,如果“任何”为粗体,那么我们也可以单独搜索它,因为它在标签内,但如果“任何”是不加粗则不能单独搜索。

完整的场景是这样的:

*假设用户已登录

当他们添加博客时 标题:“这是一个 test_user 的博客” 内容“测试用户喜欢写博客。博客的内容可以是任何东西。”

然后查看博客应该以粗体显示“任何内容”*

【问题讨论】:

  • 看起来 second 是一个很长的句子。请帮我们把它分成几个。
  • 你可以用空格标记,然后检查标记是否是任何东西,以及它是否是粗体?
  • 我通常会结合使用工具。 Selenium 将帮助您单击事物,但您可能会发现通过 lxml 解析器传递 driver.page_source 会比 Selenium 更容易遍历 dom 树。这样就可以查出前一个元素是否是标签。

标签: python selenium firefox selenium-webdriver ui-automation


【解决方案1】:

你的 xpath 会是这样的

"//article[1]/div/p[contains(b/text(), 'anything')]"

【讨论】:

  • 是的,它有效,但我想验证顶部帖子是否包含粗体“任何内容”,请您帮我解决一下吗?
  • 完整的场景是这样的:给定一个用户登录当他们添加一个标题为:“这是一个test_user的博客”内容“测试用户喜欢写博客。博客的内容可以是任何东西。”然后查看博客应该以粗体显示“任何内容”
  • @Sammy 您可以在 xpath 末尾添加 [1] 以获得 anything 的第一次出现,但我不确定这是否是您正在寻找的为了。 "(//article/div/p[contains(b/text(), 'anything')])[1]"
  • 是的,这很好,但我只在顶部的帖子中有“任何东西”以粗体显示,(您的上述评论)将在整个 DOM 中搜索并给出第一个 标记,所以它会自动变为 true
  • @Sammy 然后检查第一个文章节点。像这样 "//article[1]/div/p[contains(b/text(), 'anything')]"
【解决方案2】:

我没有明白你的逻辑,但你可以简单地检查段落是否包含粗体"Anything",如下所示:

element1= driver.find_element_by_xpath(".//*[@id='post-2662']/div/p")
try:
    element1.find_element_by_xpath(".//b[.='anything']")
except:
    print("No bold 'Anything' found")

【讨论】:

  • 我试过这个,但它实际上打印了上面的打印语句,即使“任何东西”是粗体的。 @安德森
  • 哦,是的 :) 错误的情况。试试element1.find_element_by_xpath(".//b[.='anything']")
【解决方案3】:

我会采取一些不同的方法。当我处理这样的问题时,我会尝试考虑通用(可重用)解决方案。在这种情况下(根据我从您的问题和 cmets 中收集到的内容),您想了解给定博客文章中的某些文本是否为粗体。使用 XPath,您可以指定要检查的博客文章,将文本拉入 B(粗体)并将其与您期望的内容进行比较。 XPath 看起来像

//article[1]//p/b

其中 1 是您要搜索的博客文章的索引。这将在博客文章#1 的文本中找到B 标签(如果存在)。所以,给定这个 XPath……我们将要确定这个元素是否存在(在那篇文章中任何东西都是粗体的),如果存在,则从中获取文本并将其与“任何东西”进行比较。我会将这一切包装在一个函数中以使其可重用

def is_text_bold_in_post(post_index, search_string):
    for bold in driver.find_elements_by_xpath("//article[" + post_index + "]//p/b")
        if search_string in bold.text
            # search string found
            return true
    # not found
    return false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多