在调用任何元素的send_keys()之前,我首先检查它是否已启用且可见,因此它不会引发异常。
is_Displayed会返回True,当我尝试将send_keys发送到该元素时,它仍然会引发ElementNotVisible的异常。这是某种形式的错误吗?
它适用于某些网站,但不适用于其他网站。
def login():
elem = browser.find_elements_by_xpath('//input[contains(@name, "user")]')
for elements in elem:
if elements.is_displayed():
if elements.is_enabled():
elements.send_keys(username)
elem = browser.find_elements_by_xpath('//input[contains(@name, "pass")]')
for elements in elem:
if elements.is_displayed():
if elements.is_enabled():
elements.clear()
elements.send_keys(password + Keys.RETURN) #Crashes here
time.sleep(4)
return
答案 0 :(得分:3)
试试这个:
def login():
user_elements = browser.find_elements_by_xpath('//input[contains(@name, "user")]')
for user in user_elements:
if user.is_displayed():
if user.is_enabled():
user.send_keys(username)
pass_elements = browser.find_elements_by_xpath('//input[contains(@name, "pass")]')
for passw in pass_elements:
if passw.is_displayed():
if passw.is_enabled():
passw.clear()
passw.send_keys(password + Keys.RETURN) #Crashes here
time.sleep(4)
return
您可能选择的变量名称会使内部循环破坏外部循环。
答案 1 :(得分:1)
如果有人仍然想知道是什么问题,那么这是由页面完全加载后的javascript隐藏元素引起的。
完全禁用页面上的javascript解决了这个问题。
答案 2 :(得分:-1)
请使用我的代码,我的github https://github.com/big-vl/isdisplayed_selenium/blob/master/isDisplayed.py
def isDisplayed():
try:
browser.find_element_by_xpath("//*[text()='find text vwhis in page']")
except NoSuchElementException:
return False
return True
#use function
if (isDisplayed() == True):
print('text find, pleas replace hash tag or replace xpatch')
else:
print('not found text, my style php/python *smile*')