[英]Can't locate element using By.XPATH contains(text()
你好亲爱的 stackoverflow 向导!
我试图返回一个元素数组,其中包含特定文本 xpath。
xpath 元素是这样的://*[@id="produtoNCM_50"]
在这个词之后我有一个 27 个元素的序列:
我想返回列表中的所有 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.