XPath 到 CSS 选择器

标签 xpath selenium css-selectors

我在 selenium 测试中有以下 xpath 语句:

//tbody/tr[td/span[text()='IPODate']]/td[4]/input

它得到了我想要的,但我的测试在 IE6 中非常缓慢。任何人都知道我将如何做与 CSS 选择器相同的选择器?我想我了解如何执行这些操作,但 text()="IPODate"部分除外。

根据要求,这里是我尝试从中选择的表的示例:
<table cellspacing="0" cellpadding="4" border="0" id="tblResearchItems" class="coolTable SingleItem">
        <tbody>

....很多很多行

<td>
    <input type="button" value="A" onclick="sA('secm.Company', 'IPODate', 299)" class="RButton NarrowButton2 A Show_N"/>
</td>
<td class="TCN">
    <span class="CN">IPODate</span><f/>
</td>
<td>
    <g/> 
</td>
<td class="TCV VerticalAlign">
    <input type="text" value="" onfocus="stLT(); hideLB(true)" onblur="mustBeDate($(this));" class="UpUI_Y  date NDD hasDatepicker" id="dp1260909771780"/>
    <img class="ui-datepicker-trigger" src="../images/calendar.gif" alt="..." title="..."/> <div/>
</td>
</tr>

...还有很多行...



在此示例中,只有一行具有 IPODate 单元格。

最佳答案

CSS 定位器是 css=span.CN对于其中包含文本IPODate 的跨度。

Saucelabs 对其 blog 的工作原理有很好的解释。

更新:
不幸的是,CSS在上下移动时不会解析整个树,直到它找到它之后。这就是 XPath 如此缓慢的主要原因。 CSS 找到一个项目,然后可以在 DOM 中横向移动。下面的 CSS 会找到 TD 之后的输入框。有 class=TCN它将您的跨度与表格中的文本保持一致。

CSS: table > tbody > tr > td.TCN + td + td > input

关于XPath 到 CSS 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1909584/

相关文章:

java - 当父窗口关闭时无法读取 Selenium 中的子窗口元素

javascript - 用于普通 javascript 对象而不是 DOM 元素的 jquery 选择器

excel - 使用 SendKeys 时元素无法与 Selenium Excel VBA 交互

html - 为什么 CSS 规则被禁用

XPath (1.0) 匹配连续元素直到特定子元素或结束

delphi - MSXML XPath 可以选择属性吗? (更新: real issue was with default no-prefix namespace )

c# - 我的 XPath 有什么问题?

testing - selenium:使用 xpath 定位器的自定义定位器

java - 如何获取旧 ID 并将其插入新文本字段

java - 如何使用selenium访问多个html表列数据