我正在尝试在Chrome上使用Selenium
玩QWOP,但我一直收到以下错误:
selenium.common.exceptions.NoSuchElementException:
Message: no such element: Unable to locate element
{"method":"id","selector":"window1"
(Session info: chrome=63.0.3239.108
(Driver info: chromedriver=2.34.522913
(36222509aa6e819815938cbf2709b4849735537c), platform=Linux 4.10.0-42-generic x86_64)
在使用以下代码时:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
browser = webdriver.Chrome()
browser.set_window_size(640, 480)
browser.get('http://www.foddy.net/Athletics.html?webgl=true')
browser.implicitly_wait(10)
canvas = browser.find_element_by_id("window1")
canvas.click()
while (True):
action = ActionChains(browser)
action.move_to_element(canvas).perform()
canvas.click()
canvas.send_keys("q")
相同的代码在Firefox上可以完美地工作,但是由于我想使用chrome的功能以无头模式运行webgl游戏,因此我无法真正切换到Firefox。
任何解决方法可以使它正常工作?
selenium.common.exceptions.NoSuchElementException
通常称为NoSuchElementException
:
exception selenium.common.exceptions.NoSuchElementException(msg=None, screen=None, stacktrace=None)
NoSuchElementException
基本上在以下两种情况下抛出:
webdriver.find_element_by_*("expression")
//example : my_element = driver.find_element_by_xpath("xpath_expression")
element.find_element_by_*("expression")
//example : my_element = element.find_element_by_*("expression")
根据API文档,就像其他任何文档一样selenium.common.exceptions
,NoSuchElementException
应包含以下参数:
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":".//*[@id='create-portal-popup']/div[4]/div[1]/button[3]"}
(Session info: chrome=61.0.3163.100)
(Driver info: chromedriver=2.32.498550 (9dec58e66c31bcc53a9ce3c7226f0c1c5810906a),platform=Windows NT 10.0.10240 x86_64)
NoSuchElementException 的原因可能是以下之一:
<iframe>
标签内。解决 NoSuchElementException 的解决方案可以是以下任一种:
Ctrl`` Shift``I``F12
__在这里,您将找到有关如何检查selenium3.6中元素的详细讨论,因为FF56不再可以使用Firebug吗?
execute_script()
方法滚动元素以查看如下: elem = driver.find_element_by_xpath("element_xpath")
driver.execute_script("arguments[0].scrollIntoView();", elem)
在这里,您将找到有关使用Selenium在Python中滚动到页面顶部的详细讨论。
executeScript()
方法删除属性: elem = driver.find_element_by_xpath("element_xpath")
driver.execute_script("arguments[0].removeAttribute('style')", elem)
elem.send_keys("text_to_send")
<iframe>
遍历中,可以通过以下两种方法之一定位相应的标记和所需的 iframe : <iframe>``switchTo()
driver.switch_to.frame("iframe_name")
driver.switch_to.frame("iframe_id")
driver.switch_to.frame(1) // 1 represents frame index
在这里,您可以找到有关如何选择一个html元素(无论它处于硒中的哪个帧)的详细讨论?
如果该元素在 HTML DOM中 立即不 存在 /不 可见 ,则将WebDriverWait的预期条件设置为适当的方法,如下所示: __
等待 presentation_of_element_located :
element = WebDriverWait(driver, 20).until(expected_conditions.presence_of_element_located((By.XPATH, "element_xpath']")))
要等待 visible_of_element_located :
element = WebDriverWait(driver, 20).until(expected_conditions.visibility_of_element_located((By.CSS_SELECTOR, "element_css")
等待 element_to_be_clickable :
element = WebDriverWait(driver, 20).until(expected_conditions.element_to_be_clickable((By.LINK_TEXT, "element_link_text")))
您会看到,NoSuchElementException
因为 id 定位器无法唯一标识 画布
。要标识画布及其click()
上的画布,您必须等待 画布 成为 画布clickable
并实现此目的,您可以使用以下代码块:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//canvas[@id='window1']"))).click()
我正在学习SeleniumWebDriver,在成功使用firefox之后,现在我想尝试启动Chrome。所以我设置了它的驱动程序 但是当代码流到达驱动程序时。get()指令我收到此异常: 并显示此页面: “只允许本地连接”是什么意思?如何修复?
当我试图在eclipse中使用带有Java的selenium驱动程序调用chrome浏览器时,我得到了一个错误。
我正在尝试完全加载此页面:https://candidat.pole-emploi.fr/offres/emploi/horticulteur/s1m1 我设置了一行代码来处理cookie弹出。 然后,我设置了一些行来单击加载更多结果按钮,以便加载完整的html,然后将其打印出来。 但单击一次后,我发现一条错误消息: 我不知道这意味着什么,也不知道如何修复它
我得到一个Chrome驱动程序相关的错误时运行我的Selenium测试。错误消息是“无法发现打开的页面”。硒测试一直到昨天晚上都正常。问题似乎是在前一天重新启动服务器后开始的。我无法在本地框上复制此错误。在服务器上从命令行运行Selenium测试确实会打开Chrome浏览器,但会导致相同的错误。有什么想法吗? 无法发现OpenQa.Selenium.Remote.RemoteWebDriver.U
org.openqa.selenium.WebDriverException:$(...).追加不是函数命令持续时间或超时:26毫秒构建信息:版本:'2.43.0',修订:'ACCB3003B9FB8F7CAE30F9669B4C594A065396A6',时间:'2014-09-09 22:22:51'系统信息:主机:'Jarvis',IP:'140.203.209.182',OS.name:'