【发布时间】:2013-09-17 09:50:00
【问题描述】:
所以我一直在努力学习如何在C# 中使用Selenium 为项目做一些自动化测试。但是,我在这个问题上遇到了障碍。我一直在想办法点击此网页上的以下链接。
这是我想要的目标:
<A class='PortalLink' HREF="https://mywebsite.com/myprograms/launchprogram.jsp?" onClick="setUser('login','password');"><span>MyProgram</span></A>
ClassName 的搜索没有找到任何结果。虽然有多个,但我只是想看看我是否能检测到它们的存在。
By.ClassName("PortalLink")
我尝试使用CssSelector 进行基于href 的搜索,但也失败了。
By.CssSelector("[href*='https://mywebsite.com/myprograms/launchprogram.jsp?']")
最后,我尝试使用XPath 并按类和跨度内容搜索,但这也找不到链接。
By.XPath("//A[contains(@class,'PortalLink') and span[text()='MyProgram']]")))
有问题的网页包含两个我都尝试过的框架。
我在超时前等待 200 秒。我做错了什么?提前感谢您的帮助!
【问题讨论】:
-
FindElements(By.ClassName("PortaLink"))应该返回一个IEnumerable<IWebElement>以及页面上该类的所有实例。之后,您可以使用其他属性对它们进行迭代以选择您想要的。如果这对您不起作用,那么问题很可能出在其他地方(例如页面尚未加载,或者您的自动化实际上并未查看您认为的页面/父元素)。 -
@evanmcdonnal:是的,我使用 foreach 循环将它们中的每一个都写到了控制台——但集合中从来没有任何东西。
-
好吧,开始寻找其他地方,因为很可能还有其他问题。单步执行代码,检查可能影响
FindElements返回值的值。 -
您说页面中有框架。你要改用他们吗?
-
@Arran:我在测试期间明确切换到两者。
标签: c# internet-explorer selenium webdriver