Python 如何检查元素属性是否返回";显示:无“;硒?
使用selenium,我想在某个网站上查看用户名“Natalie”是否可用。如果不是,网站会弹出一个弹出窗口,说这个名字不可用,但我不知道如何特别检查弹出窗口,因为它在innerHTML中。我决定获取并检查弹出窗口的属性,因为当用户名可用时,它会返回“display:none”,但仍然不起作用Python 如何检查元素属性是否返回";显示:无“;硒?,python,python-3.x,selenium,selenium-webdriver,selenium-chromedriver,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") element
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元素是(当用户名可用时):
用户名已被获取
HTML元素为(当用户名不可用时):
用户名已被使用
Try是否显示()元素的方法:
if elementcheck.is_displayed():
print("Natalie is taken.")
else:
print("Natalie is not taken.")
如果元素的属性包含style=“display:none;”,这意味着元素是隐藏的,那么
将无法与元素交互。因此,根据您的问题,如果要检查是否要检查显示名称的可用性
,可以使用以下代码块:
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.
不起作用。程序只会跳到else:,即使名称已被取下。当您键入或单击按钮或可能按下tab键后,网页会检查名称的可用性?键入名称后,无需单击按钮或击键。您应该尝试使用\u css\u属性(“display”)的方法值\u当用户不在场时,您可以共享HTML吗?@DebanjanB您的意思是当框中没有键入任何内容时?这与用户名可用时相同。我用用户名不可用时显示的内容更新了它。@ally我同意你的第二个HTML。但是我想你的第一个HTML是不正确的。当用户不在场时,我认为
标记根本不可见。同意吗?@DebanjanB检查时,它总是可见的。唯一的区别是,当有可用的用户名时,还有“style=”display:none;“”以隐藏“用户名已被占用”弹出窗口。
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.