尝试使用Selenium和Python从span获取文本

尝试使用Selenium和Python从span获取文本,python,selenium,selenium-webdriver,web-scraping,selenium-chromedriver,Python,Selenium,Selenium Webdriver,Web Scraping,Selenium Chromedriver,编辑:我找到了罪魁祸首。这个额外的“s”当然对我没有任何好处,但真正的问题是,在搜索元素之前,我需要切换到一个新的框架。现在很有魅力。谢谢你的帮助 我正在尝试从ServiceNow中的各种文本搜索中提取总结果数。我没有访问API的权限,所以我不得不对它进行一点暴力。现在我有一个python脚本,它使用selenium来运行搜索。我的问题是,为了我的生命,我不能勉强获得结果 下面是我的代码片段,它不起作用: elm_result = web_driver.find_elements_by_nam

编辑:我找到了罪魁祸首。这个额外的“s”当然对我没有任何好处,但真正的问题是,在搜索元素之前,我需要切换到一个新的框架。现在很有魅力。谢谢你的帮助


我正在尝试从ServiceNow中的各种文本搜索中提取总结果数。我没有访问API的权限,所以我不得不对它进行一点暴力。现在我有一个python脚本,它使用selenium来运行搜索。我的问题是,为了我的生命,我不能勉强获得结果

下面是我的代码片段,它不起作用:

elm_result = web_driver.find_elements_by_name("ts_count_8c58a5aa0a0a0b07008047e8ef0fe07d")
print("Total results: ", elm_result.text)
这是html和它从中提取的页面:

<span name="ts_count_8c58a5aa0a0a0b07008047e8ef0fe07d" id="ts_count_8c58a5aa0a0a0b07008047e8ef0fe07d">
&nbsp;(162 matches)&nbsp;&nbsp;&nbsp;
   <em>
      <span class="search_no_results">No matches for <a title="" class="noresultlink" href="ticket_list.do sysparm_query=123TEXTQUERY321%3DSAP%5Eactive%3Dtrue">Tickets</a>
         <span>
         </span>
      </span>
   </em>
</span>

(162场比赛)
没有匹配的
当我运行脚本时,它似乎挂起了最后一点,最后抛出了以下错误:

Traceback (most recent call last):
File "...", line 35, in <module> print("Total results: ", elm_result.text)
AttributeError: 'list' object has no attribute 'text'
回溯(最近一次呼叫最后一次):
打印文件“…”第35行(“总结果:”,elm_result.text)
AttributeError:“列表”对象没有属性“文本”

我试着从不同的角度攻击它,但似乎没有任何效果。我的目标是将“162个结果”文本转换成一个变量,然后将其传递到csv上。

您需要使用
按名称查找元素
,而不是
按名称查找元素
find_elements\u by_name
返回一个WebElement,该WebElement具有属性
text
,而
find_elements\u by_name
返回一个WebElement列表

下面是一些例子

elm_result = web_driver.find_element_by_name("ts_count_8c58a5aa0a0a0b07008047e8ef0fe07d")
print("Total results: ", elm_result.text)

也可以指定列表的索引

elm_result = web_driver.find_elements_by_name("ts_count_8c58a5aa0a0a0b07008047e8ef0fe07d")
print("Total results: ", elm_result[0].text)

编辑

还有一个问题是关于登录的等待时间。您可以添加线程睡眠或使用Selenium等待特定元素

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
...
...
elm_result = WebDriverWait(web_driver, 10).until(EC.visibility_of_element_located((By.NAME, 'ts_count_8c58a5aa0a0a0b07008047e8ef0fe07d')))
print("Total results: ", elm_result.text)

你应该使用
find_element_by_name
,而不是
find_elements_by_name
,当你有一些搜索结果时,它会返回一个列表(列表没有帐户“文本”)可能与推送HTML重复。当我删除“s”时,它无法找到元素,并给出错误:“无法找到元素:{”方法“:“name”选择器“:“ts_count_8c58a5aa0a0a0b07008047e8ef0fe07d”}”修改为按id查找、按css查找、甚至按xpath查找时,都会得到相同的结果。