Python/Selenium-WebElement的文本属性截断重复的空白

Python/Selenium-WebElement的文本属性截断重复的空白,python,html,selenium,dom,selenium-webdriver,Python,Html,Selenium,Dom,Selenium Webdriver,我想与大家分享我对WebElement的文本属性的观察。我有一个pdf链接: 文件名有三个空格,当我尝试获取标记中包含的元素的text属性时,只需从额外的空格接收截断的字符串: “03057895_05-01-2015_平台快速阵列感应sp gr hsts中子密度测井。pdf” 对于我来说,找出这个问题非常关键,因为我使用text来识别下载的文件名并监视文件的下载状态 任何人以前都遇到过类似的情况,或者可能知道它为什么以这种方式工作?正如@Eric评论的那样,这不是硒的问题。这是您的应用程序中

我想与大家分享我对WebElement的文本属性的观察。我有一个pdf链接:

文件名有三个空格,当我尝试获取标记中包含的元素的text属性时,只需从额外的空格接收截断的字符串:

“03057895_05-01-2015_平台快速阵列感应sp gr hsts中子密度测井。pdf”

对于我来说,找出这个问题非常关键,因为我使用text来识别下载的文件名并监视文件的下载状态


任何人以前都遇到过类似的情况,或者可能知道它为什么以这种方式工作?

正如@Eric评论的那样,这不是硒的问题。这是您的应用程序中的一个问题。 但是,如果您真的想获取该文本,则必须获取属性innerHTML。见下面的代码:

text = driver.find_element_by_css_selector("a").get_attribute("innerHTML")

我不知道在Selenium中是如何处理的,但在html中通常不会保留空白,所以如果为您清理了未渲染的部分,我也不会感到惊讶。你不能在链接中使用href,因为这必须是正确的,而且我认为会更可靠。。。你没有明白我的意思。我的抱怨是文本属性在这种情况下具有不可预测的行为。虽然这个额外的空白是html的问题,但我认为selenium应该返回实际结果,而不需要任何隐式操作另外,我没有使用href,我正在尝试提取标签的文本,因为下载后它将成为一个文件名,这将成为我的一个问题,因为文本返回不存在的文件名否,我不认为我误解了。这是一个空白不重要且不一定保留的区域,特别是当要求渲染器我不渲染任何内容时(顺便说一句,这些额外的空白由浏览器按原样渲染,不进行修剪)。实际上这很重要,因为这个链接是一个pdf文件名,我正在下载。在我看来,这个text()属性是从WebElement对象中获取它的最简单的解决方案,但令人惊讶的是,它在IMHO中出错了,因为它下面有一些修剪的东西。这是一个意外的结果,因为在我看来text()属性被设计为返回一个包含在标记或其他内容中的纯文本值(我用黄色突出显示了它),但它返回edited标记之间的部分正是selenium正在“渲染”的内容,以及空白不可靠的区域。如果您想要实际名称,唯一安全的方法是获取
a
标记的
href
部分并处理它。我试图找出其他一些方法。你的例子很粗糙,你可以看到这一点。这是一个表,为了只处理带有PDF扩展名的每个链接,我们应该循环遍历每个表行,然后找到合适的列,然后用准确的url指示标记,最后我希望通过使用text属性获得此链接的简单文本条目。我不确定css_选择器是否适合here@Alex-博格达诺夫我不知道我是否理解你。您可以创建与
匹配的css选择器表达式,该表达式包含表中的确切URL。e、 g.
“表格>正文a[href*='.pdf']”
。为什么不使用这个呢?css_选择器返回WebElement对象,我需要它的文本属性,因为这是实际的文件名,之后我将监视它是否正在下载finished@Alex-博格达诺夫你试过我的答案了吗?它返回文本,而不是webelement。对不起,我还没有找到它。你所说的css选择器,所有的
find\u by
方法总是返回WebElement对象,然后你可以获取它的
get\u属性('href')
,然后像我实际做的那样剥离到一个文件名,@Eric Renouf