我正在测试一个网站,其中有一个“帐户”页面,其中显示了可用订阅级别的表格,其中列标题是不同类型的帐户,行列出了所有功能,哪些功能在哪个级别可用。 E.g:
fanboy poweruser neophyte freeloader
Widgets 1,000 500 250 100
Doodads 750 350 100 100
Thingies 500 250 100 50
[UPGRADE] [UPGRADE] [UPGRADE] Your Plan
这都是作为具有唯一类名的嵌套div
元素完成的,因此通过相应的类名查找特定单元格非常简单。例如:
var yourPlan = driver.FindElement(By.ClassName("your_plan"));
如果我已经知道的话,我也可以通过他们的XPath找到特定的单元格。例如:
var yourPlan = driver.FindElement(By.XPath(".//div[@class='your_plan']"));
但有时候我需要通过classname来发现我来过的单元格的xpath,而且在Webdriver(C#)中似乎没有一种简单的方法可以做到这一点。有人曾经这样做过吗?
<小时/> 编辑:向所有人道歉,因为没有更清楚这一点:我没有遇到通过classname或其他属性(甚至xpath,当我已经知道它)找到元素时遇到的任何问题。但是我需要的是,一旦通过除xpath以外的方式找到所述元素,webdriver就会报告它发现给我的完整xpath。
希望有所帮助。
任何帮助表示赞赏。 谢谢 格雷格
答案 0 :(得分:1)
Selenium没有任何办法可以提供这些信息。虽然有一些工具可以为给定元素生成XPath(想到Firefox的Firebug和XPather插件),但这不是Selenium提供的功能。我希望我能给你一个更好的答案,但答案是肯定的,Selenium不会为你通过其他方式找到的元素提供XPath。
答案 1 :(得分:0)
只需使用以下内容创建XPath表达式字符串:
"//div[@class='" + className + "']"
如果类名确实是唯一的,则此XPath表达式将仅找到该div。如果您不知道该元素是div还是其他内容,请使用
"//*[@class='" + className + "']"