使用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>
答案 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.")