【问题标题】:Element is not currently visible and so may not be interacted with Firefox and Python元素当前不可见,因此可能无法与 Firefox 和 Python 交互
【发布时间】:2016-09-30 12:24:38
【问题描述】:

大家好,我正在尝试编写一个脚本来模拟点击网站。但是,我面临这个错误:

Traceback(最近一次调用最后一次):文件“D:/YetLin/testbb.py”,行 44,在 yearselect.select_by_value("2") 文件 "D:\Python27\lib\site-packages\selenium\webdriver\support\select.py", 第 81 行,在 select_by_value 中 self._setSelected(opt) 文件 "D:\Python27\lib\site-packages\selenium\webdriver\support\select.py", 第 211 行,在 _setSelected option.click() 文件 "D:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", 第 74 行,点击 self._execute(Command.CLICK_ELEMENT) 文件 "D:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", 第 457 行,在 _execute 中 return self._parent.execute(command, params) 文件 "D:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", 第 233 行,执行中 self.error_handler.check_response(response) 文件 "D:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", 第 194 行,在 check_response 中 raise exception_class(message, screen, stacktrace) selenium.common.exceptions.ElementNotVisibleException: 消息: 元素当前不可见,因此可能无法与之交互

这是元素的图像,以下是我的代码。有人可以帮忙吗? :)

from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver import ActionChains
url = 'https://appworld.blackberry.com/isvportal/login.do'
driver = webdriver.Firefox()
driver.get(url)

element = driver.find_element_by_id("ssoLogin")
driver.execute_script("arguments[0].click();", element)
username = driver.find_element_by_name("formId:email")
password = driver.find_element_by_name("formId:password")

username.send_keys("yyy")
password.send_keys("xxx")

driver.find_element_by_name("formId:logincommandLink").click()

driver.find_element_by_link_text('Reports').click()
driver.implicitly_wait(3)
driver.find_element_by_link_text('Schedule').click()


driver.implicitly_wait(3)

driver.find_element_by_id("s2id_fetchTypesSelect")



driver.find_element_by_id("s2id_fetchTypesSelect")
driver.find_element_by_css_selector("#fetchTypesSelect").click()
yearselect = Select(driver.find_element_by_css_selector("#fetchTypesSelect"))
driver.implicitly_wait(3)
yearselect.select_by_value("2")

整个事情是一个下拉列表。这只会在您单击“请选择类型”后显示。我要获取“下载摘要”

【问题讨论】:

  • 尝试向上/向下滚动到该元素,然后选择它。这可能行得通。
  • 你能在脚本运行时直观地确认元素是可见的吗?
  • 感谢您的评论!但是,下拉列表不需要滚动(手动点击)。
  • 你也可以从控制台粘贴确切的错误吗?
  • @HassanMehmood 嗯,你这是什么意思?我将截图我在点击“请选择类型”之前和之后看到的内容

标签: javascript python selenium


【解决方案1】:

设法得到它:) 如果有人需要,请在此处发布我的答案。

我所做的是使用搜索文本框来获得我想要的选项。

driver.find_element_by_xpath('//*[@id="s2id_fetchTypesSelect"]/a/span[1]').click()
time.sleep(1)
#driver.find_element_by_css_selector('#fetchTypesSelect')

time.sleep(1)

search= driver.find_element_by_xpath('//*[@id="select2-drop"]/div/input')
search.click()
search.send_keys('Download Summary')
driver.find_element_by_xpath('//*[@id="select2-drop"]/ul/li/div').click()

【讨论】:

    【解决方案2】:

    我以前也遇到过同样的问题。事实是选择元素是隐藏的,实际上类是隐藏字段。 selenium 驱动程序看不到它。

    【讨论】:

    • 我没有解决。事实上,如果你能找到解决方案,我会很乐意使用它!
    • @MatteoFelici 不是硒问题。问题是该元素在浏览器窗口中不可见。
    • @MatteoFelici 我设法得到它!看看我在答案部分的代码是否对你有帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 2016-11-13
    • 2017-01-27
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多