Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何检查元素属性是否返回";显示:无“;硒?_Python_Python 3.x_Selenium_Selenium Webdriver_Selenium Chromedriver - Fatal编程技术网

Python 如何检查元素属性是否返回";显示:无“;硒?

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

使用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元素是(当用户名可用时):

用户名已被获取

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.