python + selenium 獲取標簽文本的為空解決辦法


一、確定元素是否被隱藏

link = driver.find_element(*By_xx, 'value').is_displayed()
print(link)

如果輸出結果為False,說明元素被隱藏了。

二、解決方法

1、修改當前定位元素方式方法(修改定位元素方式,或者修改定位元素的路徑等),使用is_displayed()方法定位元素結果為True。

  由於webdriver spec的定義,selenium WebDriver只會與課件元素交互,所以獲取隱藏元素的文本信息返回為空字符串。

2、通過get_attribute()方法獲取元素的文本信息。

  在獲取隱藏元素的文本信息時,可以使用get_attribute()方法,通過textContent、innerText、innerHTML等屬性獲取。

  innerHTML會返回元素內部的HTML,包含所有的HTML標簽。

  textContent和innerText置灰得到文本內容,而不會包含HTML標簽。textContent是W3C兼容的文字內容屬性,但是IE不支持;innerText不是W3C DOM的指定內容,但是FireFox不支持。

from selenium.webdriver.common.by import By
from test_case.common.home import Page


class CloudMainPage(Page):
    username_input = (By.ID, 'username')
    password_input = (By.ID, 'password')
    loging_button = (By.XPATH, '//*[@id="loginDiv"]/div[1]/div[1]/ul/li[4]/div[1]')
    loging_result = (By.XPATH, '//*[@id="tuichuxitong"]/span')

    def user_login(self, username, password):
        """
        用戶登錄
        :param username: 用戶名
        :param password: 密碼
        :return:
        """
        self.find_element(*self.username_input).clear()
        self.find_element(*self.username_input).send_keys(username)
        self.find_element(*self.password_input).clear()
        self.find_element(*self.password_input).send_keys(password)
        self.find_element(*self.loging_button).click()

    def login_result(self):
        return self.find_element(*self.loging_result).get_attribute('innerText')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM