Python Selenium获取“li”文本

anauzrmj  于 2022-11-24  发布在  Python
关注(0)|答案(2)|浏览(232)

使用Python Selenium,我试图从 li 类中提取信息。下面是我尝试过的代码,但是我得到了一个错误:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element:

{"method":"xpath","selector":"//ul[@class='oas_columnsWrapper']//following::li[2]"}

我要打印:218543-Not Applicable+OA
下面是我已经尝试过的代码,但没有运气.
我该如何修复它?

print(browser.find_element(By.XPATH,"//ul[@class='oas_columnsWrapper']//following::li[2]").Attribute("innerHTML"))

我的HTML程式码:

<ul class="omniAds__oas_columnsWrapper">
   <li class="omniAds__oas_columns">1.</li>
   <li class="omniAds__oas_columns">218543-Not Applicable+OA</li>
   <li class="omniAds__oas_columns"></li>
   <li class="omniAds__oas_columns">23-11-2021</li>
   <li class="omniAds__oas_columns">19,452</li>
   <li class="omniAds__oas_columns">546</li>
   <li class="omniAds__oas_columns">3%</li>
   <li class="omniAds__oas_columns undefined"><b>RUNNING</b></li>
   <div class="omniAds__oas_columns"><a href="/my99acres/all_responses/OA"><b>16 Responses</b></a></div>
   <li class="omniAds__oas_columns omniAds__oas_viewReportBtn" id="oas_viewReportBtn0">View Report</li>
</ul>
t1qtbnec

t1qtbnec1#

在Selenium-Python中没有任何方法叫做Attribute,它是get_attribute
此外,还应添加一些延迟

time.sleep(5)
second_li = browser.find_element(By.XPATH,"//ul[@class='omniAds__oas_columnsWrapper']//following::li[2]").get_attribute('innerText')
print(second_li)

建议(使用显式等待)

try:
    second_li = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//ul[@class='omniAds__oas_columnsWrapper']//following::li[2]"))).get_attribute('innerText')
    print(second_li)
except:
    print("Could not get the text")
    pass

您必须导入

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
dpiehjr4

dpiehjr42#

XPath选择器不正确。它必须是omniAds__oas_columnsWrapper,而不仅仅是oas_columnsWrapper
另外,你不需要选择WebElement的属性来获取它的文本。Selenium已经为WebElement提供了一个内置属性.text来为你做这件事。但是,如果你仍然想使用属性,请使用.get_attribute()而不是attribute()。
另外,顺便提一下,我认为XPath可以简化一些。

相关问题