【发布时间】:2017-02-07 00:30:29
【问题描述】:
我编写了一些代码来使用 C# 中的 Webdriver 执行重复性任务。 我的代码在我的 PC 上运行良好,但它在我老板的 PC 上抓取了不同的元素。
我正在寻找的元素:
var InventMgmt = driver.FindElement(By.XPath("//*[@id='ROOT/Inventory Management']/div/span"));
此元素来自我公司正在使用的 WebApp,在整个网络中都是相同的。
问题是 Webdriver 正在单击一个我的代码中未列出的完全不同的元素。
两台电脑都使用相同的企业操作系统 (Windows 10),浏览器版本相同。
在我老板的浏览器中查看了我的代码和 Inspecting Element 后,我开始相信问题只能来自我老板的 PC……什么会导致这种问题?
这是我正在寻找的元素的 innerHTML 以及实际被点击的元素:
尝试点击“库存管理”跨度:
<div id="ROOT/Inventory Management" class="x-panel x-panel-noborder x-tree x-panel-collapsed" style="width: auto;">
<div class="x-panel-header x-panel-header-noborder x-unselectable x-accordion-hd" id="ext-gen186" tabindex="0" role="tab" aria-expanded="false" style="cursor: pointer;">
<span class="x-panel-header-text" id="ext-gen190">Inventory Management</span>
</div>
</div>
被点击的元素是id为“ROOT/Support Table”的div:
<div id="ROOT/Support Table" class="x-panel x-panel-noborder x-tree" style="width: auto;">
<div class="x-panel-header x-panel-header-noborder x-unselectable x-accordion-hd" id="ext-gen248" tabindex="0" role="tab" aria-expanded="true" style="cursor: pointer;">
<span class="x-panel-header-text" id="ext-gen252">Support Table</span>
</div>
</div>
【问题讨论】:
-
显示
HTML的span元素 -
@Andersson 我为这两个元素添加了代码。
-
有没有办法更新页面源以将 span 元素的 id 分配给可预测的东西?这样您就可以使用 By.Id 并直接找到 span 元素,而无需使用 xpath。
-
我已经做到了。在我的电脑上工作,而不是在我老板的电脑上。有趣的是,如果我使用 Javascript 而不是 Webdriver 单击 ID,它会起作用。它似乎真的与缩放、字体大小、分辨率或类似的东西有关......
标签: c# windows selenium webdriver internet-explorer-11