簡體   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