• 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')
  • 相关阅读:
    iframe与动作连处理
    selenium其他自动化操作
    使用seleniun模拟登陆qq空间
    selenium基本使用
    验证码识别 云打码之古诗文网验证识别
    图片爬取基础
    centos8下LAMP搭建Nextcloud
    浅谈centos8与centos7
    DHCP服务器配置及测试
    使用Apache服务器实现Nginx反向代理
  • 原文地址:https://www.cnblogs.com/chen/p/10931424.html
Copyright © 2020-2023  润新知