如何在selenium中检查元素属性是否返回“display:none”?

时间:2017-11-22 14:55:36

标签: python python-3.x selenium selenium-webdriver selenium-chromedriver

使用selenium,如果用户名“Natalie”可用,我想查看某个网站。如果不是,该网站会弹出一个弹出窗口,说该名称不可用,但我不知道如何检查弹出窗口,因为它位于innerHTML中。我决定获取并检查弹出窗口的属性,因为当用户名可用时它返回“display:none”,但它仍然无效。

element = driver.find_element_by_xpath("""//*[@id="username"]""")
element.send_keys("Natalie")
elementcheck = driver.find_element_by_xpath("""//*[@id="username-exists"]""")
style = elementcheck.get_attribute('style')
if 'none' in style:
    print("Natalie is taken.")
else:
    print("Natalie is not taken.")

HTML元素是(当用户名可用时):

<p id="username-exists" class="error-username feedback error" style="display: none;">Username is already taken.</p>

HTML元素是(当用户名不可用时):

<p id="username-exists" class="error-username feedback error" style="">Username is already taken.</p>

2 个答案:

答案 0 :(得分:1)

如果元素的属性包含style =&#34; display:none;&#34;这意味着元素 Hidden ,然后 Selenium 无法与元素进行交互。因此,根据您的问题,如果您想检查是否要检查Display Name的可用性,可以使用以下代码块:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver=webdriver.Firefox(executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe')
driver.get("https://playdauntless.com/accounts/")
display_name = driver.find_element_by_xpath("//input[@id='username']")
display_name.send_keys("Natalie")
display_name.submit()
try :
    my_style = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH,"//p[@id='username-exists']")))
    print("Natalie is taken.")
except :
    print("Natalie is not taken.")

控制台输出:

Natalie     => Natalie is taken.
Debanjan    => Debanjan is not taken.

答案 1 :(得分:0)

为您的元素尝试 is_displayed()方法:

if elementcheck.is_displayed():
    print("Natalie is taken.")
else:
    print("Natalie is not taken.")