[英]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.