我刚开始使用C#使用网络驱动程序。我有问题找到点击它的图像元素。下面是HTML。如果有人可以帮助我,那会很棒。感谢。
<a id="3245248" class="detail-info" href="#">
<img title="Order Information" src="/Content/images/24x24/info.png">
答案 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是否正常工作。