使用Join方法合并FirefoxWebElements的文本

时间:2018-07-19 02:52:42

标签: python python-3.x python-2.7 selenium-webdriver webdriver

我是Python的新手,所以我希望有人可以帮助我解决以下问题。

project_tags = browser.find_elements_by_xpath('//a[contains(@class, "campaignTags-tag")]')
separator = ', '
project_tags = separator.join(project_tags)

我知道,如果project_tags是一个数组,则join方法会起作用。因此,我认为由于project_tags是可迭代的,因此上面的代码可能会起作用,但是由于FirefoxWebElements是可迭代的,所以当然没有。

我相信,要使join在这种情况下工作,我要做的就是指向每个FirefoxWebElement的文本。 即使我可以通过其他几种方式实现目标,但我只是想知道这是否可行?

其中一种似乎很冗长的方法是:

project_tags = browser.find_elements_by_xpath('//a[contains(@class, "campaignTags-tag")]')
for idx, tag in enumerate(project_tags):
    if idx is 0:
        tags_string = tag.text
    else:
        tags_string = tags_string + ', ' + tag.text if idx < len(project_tags) else tags_string + tag.text

是否有我可能不知道的方法可以重构和最小化上面的工作示例?

1 个答案:

答案 0 :(得分:0)

我相信这可以满足您的需求

tags_string = ", ".join([t.text for t in project_tags])

但是请注意,它在最后2个标记之间包含一个逗号,您的代码中没有逗号,我认为这是一个错误。如果没有,您可以使用:

tags_string = ", ".join([t.text for t in project_tags[:-1]]) + project_tags[-1].text