硒无法从元素获取文本

托比亚斯·安德森(Tobias Andersson)

我无法从元素中获取文本。我认为这是一个动态添加的文本(从Angular)到元素,因此没有直接加载到元素中。元素内的文本格式为“ 3”,在ut周围带有引号。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains

import xlsxwriter

import re
pattern = r"[\"\d{1, 2}\"]"

PATH = "C:\Program Files (x86)\chromedriver.exe"
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--no-sandbox')
driver = webdriver.Chrome(PATH, chrome_options=chrome_options)


driver.get("some-url")

xpathPain = "/html/body/div[2]/div/div/div[1]/div/div/div[1]/div[3]/div/div/div[1]/div[3]/development-numbers/status-numbers/div/div[2]/div/h4"

try:
    element = WebDriverWait(driver, 20).until(
        EC.presence_of_element_located((By.XPATH, xpathPain)))

    elementPain = driver.find_element_by_xpath(xpathPain)
    print(elementPain.text)

except TimeoutException:
    print("Failed to load elementPain")

我得到的输出:(空白,像一个空字符串)

我试图等待直到文本加载EC EC_text_to_be_present_in_element(locator,text_),并尝试对文本部分使用正则表达式。

元素的页面来源是:

<h4 class="status-numbers__number">
"6"
<!---->
</h4>

那么如何从这个元素中得到数字6?

我已经尝试过print(elementPain.get_attribute(“ innerHTML”)),但它得到"<!---->"了文本一部分,而不是'"6"'一部分。我也尝试过.getAttribute("innerText"), .getAttribute("textContent").

我也尝试过使用firefox geckodriver。没有结果。

我设法使用Firefox和以下代码解决了该问题:

try:
    element = WebDriverWait(driver, 20).until(
        EC.element_to_be_clickable((By.XPATH, xpathPain)))

    elementPain = driver.find_element_by_xpath(xpathPain)
    print(elementPain.get_attribute("innerHTML"))

不知道这与视口外的元素有关。

托比亚斯·安德森(Tobias Andersson)

我设法使用Firefox和以下代码解决了该问题:

try:
    element = WebDriverWait(driver, 20).until(
        EC.element_to_be_clickable((By.XPATH, xpathPain)))

    elementPain = driver.find_element_by_xpath(xpathPain)
    print(elementPain.get_attribute("innerHTML"))

不知道这与视口外的元素有关。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章