一、確定元素是否被隱藏
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')