繁体   English   中英

无法使用 By.XPATH 包含(文本()

[英]Can't locate element using By.XPATH contains(text()

你好亲爱的 stackoverflow 向导!

我试图返回一个元素数组,其中包含特定文本 xpath。

xpath 元素是这样的://*[@id="produtoNCM_50"]

在这个词之后我有一个 27 个元素的序列:

  1. //*[@id="produtoNCM_50"]
  2. //*[@id="produtoNCM_51"]
  3. //*[@id="produtoNCM_52"]
  4. //*[@id="produtoNCM_n"]

我想返回列表中的所有 web 元素,所以我尝试使用 contains(text() 方法,但找不到元素。这是代码

import pandas as pd
from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
import time
import os
from pprint import pprint

servico = Service(ChromeDriverManager().install())
chrome_options = Options()
chrome_options.add_argument("--disable-notifications")

navegador = webdriver.Chrome(chrome_options=chrome_options, service=servico)

我的第一次尝试是:

navegador.find_element(By.XPATH('//*[contains(text(), "regra_")]'))

但它返回错误: TypeError: 'str' object is not callable

然后我试过了

navegador.find_element(By.XPATH, '//*[contains(text(), "regra_")]')

但它返回另一个错误: NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[contains(text(), "regra_")]"} (会话信息:chrome=108.0.5359.125)

谢谢你的帮助!

您不应该根据我们从您的代码中获得的内容来查找文本。 如果你想找到那些元素,你应该寻找你已经在顶部提到的 ID

WebDriverWait (driver, 30).until(EC.presence_of_element_located((By.XPATH, "//*[contains(@id, 'produtoNCM_50')]")))

你可以更进一步,把它放到一个循环中

for i in range(50, 57, 1):
    WebDriverWait (driver, 30).until(EC.presence_of_element_located((By.XPATH, "//*[contains(@id, 'produtoNCM_"+ i +"')]")))

从您提供的输入屏幕截图来看,输入中没有可用文本,也没有子项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM