尝试在Google上输入文字并点击按钮,在此行中获得“无法找到元素”的异常:driverIE.FindElement(By.Id(“lst-ib”))。SendKeys(“Selenium”),虽然我知道元素存在于DOM页面上。
最小,完整且可验证的代码
Imports OpenQA.Selenium
Imports OpenQA.Selenium.IE
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim driverIE As New InternetExplorerDriver()
driverIE.Navigate.GoToUrl("http://google.com")
driverIE.FindElement(By.Id("lst-ib")).SendKeys("Selenium")
driverIE.FindElement(By.Id("lst-ib")).SendKeys(Keys.Enter)
End Sub
End Class
在发布到SO之前我已经尝试过的事情
IEDriverServer exectuable必须下载并放入您的 路径。
在Windows Vista或Windows 7上的IE 7或更高版本中,您必须设置 每个区域的保护模式设置为相同的值。该 值可以打开或关闭,只要它对于每个区域都相同。至 设置保护模式设置,从中选择“Internet选项...” “工具”菜单,然后单击“安全”选项卡。对于每个区域,都会有 是标签为“启用保护”选项卡底部的复选框 模式”。
此外,必须禁用IE 10和“增强保护模式” 更高。此选项位于Internet的“高级”选项卡中 选项对话框。浏览器缩放级别必须设置为100%,以便 可以将本机鼠标事件设置为正确的坐标。
仅对于IE 11,您需要在目标上设置注册表项 计算机使驱动程序可以保持与实例的连接 它创建的Internet Explorer。对于32位Windows安装, 您必须在注册表编辑器中检查密钥 HKEY_LOCAL_MACHINE \ SOFTWARE \微软\互联网 资源管理器\ MAIN \ FeatureControl \ FEATURE_BFCACHE。对于64位Windows 装置,关键是 HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \微软\互联网 资源管理器\ MAIN \ FeatureControl \ FEATURE_BFCACHE。请注意 FEATURE_BFCACHE子键可能存在也可能不存在,应该是 如果它不存在则创建。重要提示:在此密钥内,创建一个 DWORD值名为iexplore.exe,值为0.
脚注:这不是这个问题的重复:Selenium Unable to Find Element原因是,我不想使用显式的Wait()。谢谢!