5

在调用任何元素的 send_keys() 之前,我首先检查它是否已启用且可见,因此它不会引发异常。

发生的事情是 is_Displayed 返回 True,当我尝试将_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
4

3 回答 3

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

您选择的变量名很可能会让您用内部循环破坏外部循环。

于 2013-07-25T23:24:35.670 回答
3

如果有人仍然想知道是什么问题,它是由页面完全加载后的 javascript 隐藏元素引起的。

完全禁用页面上的 javascript 解决了这个问题。

于 2015-07-19T18:39:11.533 回答
-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*')
于 2020-01-29T21:44:41.490 回答