硒单击谷歌上的图像链接,然后单击第一张图像

时间:2018-06-21 14:21:01

标签: selenium selenium-webdriver

我有以下代码。当我执行此操作时,

  1. Firefox打开-预期
  2. 转到Google.com-预期
  3. 搜索框上Pluralsight徽标中的键-预期
  4. 我不知道会发生什么,然后我看到搜索框中没有文本的Google.com页面。

但是,当我放置断点并逐行显示时,我看到它单击了Images。那么,在没有断点的情况下执行它有什么问题呢?

我的另一个问题是,一旦进入“图像”屏幕,如何使脚本单击第一个图像?我看到类名是 rg_ic rg_i ,但是我不能使用它,因为它有空格。 ID每次都在变化。那么,如何单击第一个图像?我之所以发表评论,是因为我无法使其正常工作。

using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            IWebDriver driver = new FirefoxDriver();
            driver.Url = "http://google.com";
            var searchBox = driver.FindElement(By.Name("q"));
            searchBox.SendKeys("Pluralsight logo");
            searchBox.Submit();
            var imageLink = driver.FindElement(By.LinkText("Images"));
            imageLink.Click();
            //var firstImage = driver.FindElements(By.ClassName("rg_ic"))[0];
            //firstImage.Click();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

图像ID是恒定的,我使用此图像进行了成功的测试(允许使用的是python,但是语法相似):

driver.get("http://google.com")
search_box = driver.find_element_by_name("q")
search_box.send_keys("Pluralsight logo")
search_box.submit()
time.sleep(4)
first_img = driver.find_element_by_id("dimg_1").click()

您必须提供时间以加载图像。您可以在预期的条件下执行此操作,也可以仅进行明确的等待。希望这可以帮助。