[英]Click Function not working in Selenium Driver C#
所以我不太明白为什么这行不通。 (Win Forms Selenium Firefox网络驱动程序C#)
driver.FindElement(By.ClassName("video")).Click();
html中有多个带有“视频”的ClassName,因此可能是问题所在。
这是该网站的HTML代码
<div class="video">
<a style="background-image: url("http://pthumbnails.5min.com/10370971/518548518_c_240_135.jpg");" href="/watch/psychic-intervention-help-from-baby-amanda-518548518" data-id="518548518">
<span>'Psychic Intervention': Help From Baby Amanda</span>
</a>
</div>
视频旁边的HTML中的所有内容都会随时更改。 请和谢谢:)
如果要打开链接,则div不是要单击的元素。 您需要单击div中的链接(<a>元素)。
如果您不知道链接文本或URL是什么,但是知道它在类为“ video”的div中,则可以通过在x后面查找第一个<a>标签来按其xpath查找元素。带有视频课程的div。
driver.FindElement(By.XPath("//div[@class='video']/a")).Click();
FindElement还会始终选择DOM中符合条件的第一个元素,如果您只想单击任何视频链接,这很好。
但是,如果有一个以上的div类视频有<A>元素,你要点击一个特定的视频链接,您可能需要使用driver.FindElement s到让所有的视频链接,比较信息,然后单击所需的那个。
由于存在多个带有“ video”的类名,因此您需要隔离xpath使其指向相关元素。
以下是执行此操作的方法:
1-通过使用带有视频类名的div和span标签内的innerHTML / text (假设整个页面中只有1个此类的innerHTML / text实例):
driver.FindElement(By.XPath("//div[@class='video']//span[contains(text(),'Help From Baby Amanda ')]")).Click();
2-通过使用'a'标签的唯一属性'data-id' (假设data-id实际上是UNIQUE):
driver.FindElement(By.XPath("//a[@data-id='518548518']")).Click();
3-通过使用'a'标签和span标签的innerHTML / text (假设整个页面中只有1个此类的innerHTML / text实例):
driver.FindElement(By.XPath("//a/span[contains(text(),'Help From Baby Amanda ')]")).Click();
4-仅通过使用span标记的innerHTML / text (假设整个页面中只有1个此类innerHTML / text实例):
driver.FindElement(By.XPath("//span[contains(text(),'Help From Baby Amanda')]")).Click();
注意:-有多种方法可以做到这一点。 上面是根据给定的HTML代码片段可以想到的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.