繁体   English   中英

单击功能在Selenium驱动程序C#中不起作用

[英]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(&quot;http://pthumbnails.5min.com/10370971/518548518_c_240_135.jpg&quot;);" 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM