【问题标题】:Selenium IE Driver locator - a tricky element Xpath or CSSSelenium IE 驱动程序定位器 - 一个棘手的元素 Xpath 或 CSS
【发布时间】:2013-08-06 19:39:06
【问题描述】:

我在一个页面上有一个按钮,我需要为其编写定位器 - 到目前为止还没有成功,所以在这里希望得到一些帮助:

<div class="border" style="border-radius: 10px 10px 10px 10px;">
<div>
<span id="btnAddClient" class="buttons">
<div id="clientContainer">
<div id="ClientAccordian_204" class="accordion ui-accordion ui-widget ui-helper-reset ui-accordion-icons" role="tablist">
<h3 id="H3Client_204" class="ui-accordion-header ui-helper-reset ui-state-active ui-corner-top" role="tab" aria-expanded="true" tabindex="0">
<div class="ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content-active" role="tabpanel" style="">
<span id="btnAddYear" class="buttons">
<button onclick="javascript:ShowHideAddYear(204,0);" style="float: right; background-color: rgb(238, 238, 238);">
<button id="btnEditClient_204" title="Edit" style="float:right;">
<br>
</span>
<div id="yearsContainer_204">
</div>
</div>
<div id="ClientAccordian_210" class="accordion ui-accordion ui-widget ui-helper-reset ui-accordion-icons" role="tablist">
<h3 id="H3Client_210" class="ui-accordion-header ui-helper-reset ui-state-active ui-corner-top" role="tab" aria-expanded="true" tabindex="0">
<div class="ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content-active" role="tabpanel" style="">
<span id="btnAddYear" class="buttons">
<button onclick="javascript:ShowHideAddYear(210,0);" style="float: right; background-color: rgb(238, 238, 238);">
<button id="btnEditClient_210" title="Edit" style="float:right;">
<br>
</span>
<div id="yearsContainer_210">
</div>
</div>
<div id="ClientAccordian_209" class="accordion ui-accordion ui-widget ui-helper-reset ui-accordion-icons" role="tablist">
<div id="ClientAccordian_211" class="accordion ui-accordion ui-widget ui-helper-reset ui-accordion-icons" role="tablist">
<div id="ClientAccordian_215" class="accordion ui-accordion ui-widget ui-helper-reset ui-accordion-icons" role="tablist">
<h3 id="H3Client_215" class="ui-accordion-header ui-helper-reset ui-state-active ui-corner-top" role="tab" aria-expanded="true" tabindex="0">
<div class="ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content-active" role="tabpanel" style="">
<span id="btnAddYear" class="buttons">
<button onclick="javascript:ShowHideAddYear(215,0);" style="float: right; background-color: rgb(238, 238, 238);">
<button id="btnEditClient_215" title="Edit" style="float:right;">
<br>
</span>
<div id="yearsContainer_215"></div>
</div>
</div>
</div>
</div>

在此页面上显示了这些按钮中的 3 个,但可能还有更多 &lt;button onclick="javascript:ShowHideAddYear(i,j)..&gt;

css=#btnAddYear &gt; button//span[@id=’btnAddYear’]/button[text()=’Add Year’] 等常用定位器不起作用。有人可以帮助编写一个可靠的定位器来唯一地选择按钮吗?

【问题讨论】:

    标签: xpath css-selectors selenium-webdriver


    【解决方案1】:

    感谢您的输入,我尝试了各种操作,例如切换到元素并触发“输入”事件等,但没有任何效果。这原来是 Selenium IE 驱动程序的一个问题。 http://code.google.com/p/selenium/issues/detail?id=5142

    【讨论】:

      【解决方案2】:

      我在您提供的 html 中没有看到“添加年份”文本。如果你把它改成 //span[@id='btnAddYear']/button[1] 可以吗?

      【讨论】:

      • XPath 使用基于 1 的索引器,而不是基于 0 的索引器(如在 C# 等中)。也就是说,XPath 列表中的第一个元素是 [1],而不是 [0]。
      • 嗨,Spencer,感谢您的回复,遗憾的是按钮 [0] 也不起作用。在每个跨度下也可以找到如下所示的文本。
      • 就像阿兰说的,试试 [1]
      • 谢谢 Arran,[1] 不起作用 - 只是说“无法评估或不会生成 WebElement”,我听说这是 IE8 的问题。当我使用说萤火虫检查 Span 元素时,它不会突出显示页面中的任何区域,所以也可能是我们使用 //span 的定位器不合适 - 我们还有其他选择吗?
      • 您的目标是哪个按钮?
      【解决方案3】:

      这个怎么样?

      '//span[@id="btnAddYear"]//button[contains(., "Add Year")]'
      

      【讨论】:

      • //span[@id='btnAddYear']/button[contains(., 'Add Year')] 不起作用.. 使用 //span 似乎不起作用.. 只是没看到即使对象存在!
      猜你喜欢
      • 1970-01-01
      • 2015-09-19
      • 2020-12-29
      • 1970-01-01
      • 2017-07-02
      • 2017-01-07
      • 1970-01-01
      • 1970-01-01
      • 2016-09-28
      相关资源
      最近更新 更多