【发布时间】:2017-11-22 14:55:36
【问题描述】:
使用 selenium,我想在某个网站上检查用户名“Natalie”是否可用。如果不是,该网站会弹出一个弹出窗口,说该名称不可用,但我不知道如何专门检查弹出窗口,因为它在 innerHTML 中。我决定获取并检查弹出窗口的属性,因为当用户名可用时它返回“显示:无”,但它仍然无法正常工作。
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>
【问题讨论】:
-
您应该尝试使用 value_of_css_property('display') 方法
-
当用户不在时你能分享 HTML 吗?
-
@DebanjanB 你的意思是在框中什么都没有输入?这与用户名可用时相同。我用用户名不可用时显示的内容更新了它。
-
@ally 我同意你的第二个 HTML。但我猜你的第一个 HTML 不正确。当用户不存在时,我认为
<p>标签根本不可见。同意吗? -
@DebanjanB 检查时它总是可见的。唯一的区别是,当有可用的用户名时,还有“style="display: none;"” 以隐藏“用户名已被占用”弹出窗口。
标签: python python-3.x selenium selenium-webdriver selenium-chromedriver