当前位置: 首页 > 面试题库 >

硒元素不可见异常

童宏富
2023-03-14
问题内容

我的任务是编写一个解析器以单击网站上的一个按钮,但我只能单击其中一个按钮而遇到问题。以下代码适用于除一个按钮之外的所有按钮。

这是html:http
//pastebin.com/6dLF5ru8

这是源html:http:
//pastebin.com/XhsedGLb

python代码:

 driver = webdriver.Firefox()  
 ...
 el = driver.find_element_by_id("-spel-nba")
 actions.move_to_element(el)
 actions.sleep(.1)
 actions.click()
 actions.perform()

我收到此错误。

ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with

根据赛富尔,我刚刚尝试等待相同的元素不可见异常:

wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_element_located((By.XPATH, "//input[contains(@id,'spsel')][@value='nba']"))).click()

问题答案:

如果你看一下页面的源代码,你会明白,几乎所有的SELECTDIV都是元素faked和从JavaScript创建的,这就是为什么webdriver的不能
查阅 它们。

但是,有一种解决方法,方法是使用ActionChains打开您的开发人员控制台,然后在所需元素上注入 人工 CLICK,实际上是
Label 触发了 NBA 数据加载…这是一个工作示例:

from selenium import webdriver
from selenium.webdriver.common import action_chains, keys
import time

driver = webdriver.Firefox()
driver.get('Your URL here...')
assert 'NBA' in driver.page_source
action = action_chains.ActionChains(driver)

# open up the developer console, mine on MAC, yours may be diff key combo
action.send_keys(keys.Keys.COMMAND+keys.Keys.ALT+'i')
action.perform()
time.sleep(3)
# this below ENTER is to rid of the above "i"
action.send_keys(keys.Keys.ENTER)
# inject the JavaScript...
action.send_keys("document.querySelectorAll('label.boxed')[1].click()"+keys.Keys.ENTER)
action.perform()

另外,要替换所有ActionChains命令,您可以execute_script像这样简单地运行:

driver.execute_script("document.querySelectorAll('label.boxed')[1].click()")

无论如何,至少您可以在我的本地文件上找到所需的地方…希望对您有所帮助!

在此处输入图片说明



 类似资料:
  • 当用触发时,事件错误表示元素不可见

  • 下面是我的代码。当我从excel中输入url时,大部分时间都显示org . open QA . selenium . elementnotvisibleexception:元素当前不可见错误。对于像www.travelocity.com这样的网站,它显示点击7 8链接后,但www.google.com显示错误从开始。 线程"main"org.openqa.selenium.ElementNotVi

  • 我用的是C#硒。WebDriver.2.44.0在某个第三方网站上,我试图按下一个元素并得到这个: 我得到了元素,点击我得到了: 该项目是在一些子菜单显示后,我成功地按下父菜单。也放5秒睡眠保险点手风琴看的很清楚(在我眼里也是看的很清楚)。 问题 - 在第三方网站上,如何强制点击此项目?

  • 同时点击一个特定的按钮-我的测试站点将打开模式窗口。 我找不到更好的方法等到任何一个都可见的时候。 你能提出一个解决这种情况的方法吗?

  • 问题内容: 这是我的代码,可单击该网站上的简单登录按钮 我收到以下错误: 线程“主”中的异常org.openqa.selenium.ElementNotVisibleException:元素当前不可见,因此可能无法与命令持续时间或超时进行交互:2.05秒 问题答案: 在此页面上,您有两个具有给定xpath的按钮,第一个不可见,这就是为什么您收到ElementNotVisibleException的

  • 问题内容: 我遇到以下问题。我有一个隐藏的下拉列表,因此当我进行选择并运行测试时,出现以下错误: 这是我的选择: 是否可以绕过它来操纵隐藏的元素?我在其中一篇文章中找到了以下代码: 这是html代码: 在这种情况下,它不起作用。任何帮助,将不胜感激。 问题答案: 由于尝试模拟真实用户,因此它无法与不可见/隐藏的元素进行交互。要解决您的问题,我认为您需要先单击,这将使下拉菜单可见,然后从下拉菜单中选