单击使用C#Webdriver在href中的图像元素

时间:2013-12-31 15:42:36

标签: c# selenium-webdriver

我刚开始使用C#使用网络驱动程序。我有问题找到点击它的图像元素。下面是HTML。如果有人可以帮助我,那会很棒。感谢。

<a id="3245248" class="detail-info" href="#">
<img title="Order Information" src="/Content/images/24x24/info.png">

3 个答案:

答案 0 :(得分:1)

假设您提到的webdriver是Selenium WebDriver Nuget包,并假设您的锚标签在您的img标签后面有一个结束标记,您应该可以使用Selenium来选择img标记,如下所示:

IWebDriver driver; //previously instantiated.
driver.FindElement(By.CssSelector("#3245248 img")).Click();

或者,只需点击锚标签本身:

IWebDriver driver;
driver.FindElement(By.Id("3245248")).Click();

这里的诀窍是理解CSS选择器。 #在id选择器之前,并在其后放置空格和标记名称是子选择器。简而言之,请按id选择锚标记,然后在其中查找img标记。

使用Selenium了解另一个有用的提示,如果您可以通过调用document.querySelector('some css selector')使用Web浏览器的JavaScript控制台选择它,那么Selenium也可以选择它。

如果这没有帮助,请更新您的问题,以便更具体。

答案 1 :(得分:0)

您需要点击锚标记,而不是图像本身。如果id是唯一且不会改变

,您可以尝试使用此XPath来查找锚标记
"//a[@id='3245248']"

或者更安全一点,如果ID是动态的,找到包含图像的锚标记:

"//a[./img[@title='Order Information']]"

或者这个CSS选择器,只有当ID是唯一且不会改变

"a#3245248"

编辑:使用此而不是我认为您正在使用的FindsBy注释,如果在页面加载后动态添加/修改元素,则很容易中断

IWebElement link = driver.FindElement(By.XPath("//a[./img[@title='Order Information']]"));
link.Click();

如果你调试它,你应该看看它是否实际上找到了IWebElement

答案 2 :(得分:0)

css = a.detail-info&gt; img [src =&#39; /Content/images/24x24/info.png']可以使用此CSS。

让我知道这个CSS Selector是否正常工作。