我正在尝试在C#中创建一个简单的自动化脚本,它将加载谷歌主页,然后在搜索框中键入内容,列出结果,然后单击“图像”链接并显示搜索项目的可能图像。
当Selenium Webdriver能够通过LinkText定位Images链接时,我能够达到这一点,但是当我想执行Click()操作时,我得到错误消息Exception抛出:WebDriver中的'OpenQA.Selenium.ElementNotVisibleException' .dll,我无法继续前进。
我将代码放在下面。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
namespace WebDriverDemo
{
class Program
{
static void Main(string[] args)
{
IWebDriver driver = new FirefoxDriver();
driver.Url = "http://www.google.com";
var searchBox = driver.FindElement(By.Id("lst-ib"));
searchBox.SendKeys("apple");
searchBox.SendKeys(Keys.Enter);
driver.Manage().Timeouts().ImplicitWait = (TimeSpan.FromSeconds(10));
try
{
var imageLink = driver.FindElement(By.LinkText("Images"));
Console.Write("Element found by a LinkText");
imageLink.Click();
}
catch(Exception e)
{
Console.WriteLine(e);
}
Console.Read();
}
}
}
我期待您的反馈和可能的解决方案:)
致以最诚挚的问候,谢谢,
答案 0 :(得分:0)
在搜索等待图片链接可点击后,您只需要暂停一下。
Driver.FindElement(By.Id("lst-ib")).SendKeys("apple\n");
new WebDriverWait(Driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementToBeClickable(By.LinkText("Images"))).Click();
此外,您可以发送\n
,这是一个回车符,作为字符串的一部分。
答案 1 :(得分:0)
很抱歉很长时间,但我能够自己解决问题。而不是driver.FindElement(By.LinkText(“Images”))我使用了Xpath,向我展示了图片链接的确切位置:)
感谢您的支持!
答案 2 :(得分:-1)
我不知道为什么会这样:| 在尝试了不同的“等待类型”之后,只有1个似乎正在起作用:
Thread.sleep代码(2000);
希望现在有所帮助。我仍在寻找更好的解决方法。