无法通过 xpath 选择和单击链接锚标记,它返回一个包含 1 个元素的数组

罗萨林·米什拉
<a href="MappingAndEnrichmentSetUp.aspx" title="Mapping &amp; Enrichment" class="rpLink rpExpandable  rpSelected" target="ctl00_DefaultContent_radPaneProjectMaintContent">
    <span class="rpOut rpNavigation">
        <span class=""></span>
        <span class="rpText" style="">Mapping &amp; Enrichment</span>
    </span>
</a>

这是我从控制台得到的

a=$x("//a[@title='Mapping & Enrichment']")

输出:

[a.rpLink.rpExpandable] 

在索引 0 它有链接和隐藏的照片元素

a[0].click()  --works fine

a -- 返回一个数组

是否可以直接使用 xpath 获取上述 html 片段的锚标记?

我在 java testNG 类中使用以下代码单击链接。它不工作。

控制台调试:

a=$x("(//a[@href='ProjectDimensionSetUp.aspx'])")
[a.rpLink]
  0: a.rpLinklength: 
  1__proto__: Array(0)

a=$x("(//a[@href='ProjectDimensionSetUp.aspx'])")[0]
<a href=​"ProjectDimensionSetUp.aspx" title=​"Project Dimensions" class=​"rpLink" target=​"ctl00_DefaultContent_radPaneProjectMaintContent">​…​</a>​

有没有办法直接通过xpath选择元素?这样,我就可以使用 testNG Java WebElement 中的 a.click()

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("XPATH_TO_SELECT_ANCHOR_TAG_NOT_ARRAY_WITH_ANCHOR_TAG"))).click();

Java 控制台日志:Java 日志 TestNG

JavaScript warning: http://XX.XX.XXX.XXX/XXXXX/Telerik.Web.UI.WebResource.axd?_TSM_HiddenField_=DefaultMasterScriptManager_TSM&compress=1&_TSM_CombinedScripts_=%3b%3bSystem.Web.Extensions%2c+Version%3d4.0.0.0%2c+Culture%3dneutral%2c+PublicKeyToken%3d31bf3856ad364e35%3aen-US%3a4ae4914f-8c8e-4123-9d05-414d87b48357%3aea597d4b%3ab25378d2%3bTelerik.Web.UI%2c+Version%3d2014.1.225.40%2c+Culture%3dneutral%2c+PublicKeyToken%3d121fae78165ba3d4%3aen-US%3afe3df733-ee56-4563-8789-bc399360084a%3a16e4e7cd%3aed16cbdc%3af7645509%3a88144a7a%3a24ee1bba%3a92fe8ea0%3afa31b949%3a19620875%3a874f8ea2%3af46195d3%3a490a9d4e%3abd8f85e4%3a7165f74%3a1e771326%3aa7e79140%3a2003d0b8%3aaa288e2d%3a258f1c72%3a58366029%3ab7778d6c%3ae085fe68%3ae330518b%3ac128760b%3ac8618e41%3ae4f8f289%3a1a73651d%3a333f8d94, line 2030: Using //@ to indicate sourceMappingURL pragmas is deprecated. Use //# instead
JavaScript warning: http://XX.XX.XXX.XXX/XXXXX/Telerik.Web.UI.WebResource.axd?_TSM_HiddenField_=DefaultMasterScriptManager_TSM&compress=1&_TSM_CombinedScripts_=%3b%3bSystem.Web.Extensions%2c+Version%3d4.0.0.0%2c+Culture%3dneutral%2c+PublicKeyToken%3d31bf3856ad364e35%3aen-US%3a4ae4914f-8c8e-4123-9d05-414d87b48357%3aea597d4b%3ab25378d2%3bTelerik.Web.UI%2c+Version%3d2014.1.225.40%2c+Culture%3dneutral%2c+PublicKeyToken%3d121fae78165ba3d4%3aen-US%3afe3df733-ee56-4563-8789-bc399360084a%3a16e4e7cd%3aed16cbdc%3af7645509%3a88144a7a%3a24ee1bba%3ae330518b%3a2003d0b8%3ac128760b%3a1e771326%3ac8618e41%3a1a73651d%3a333f8d94%3a11a04f7e%3af46195d3%3a4cacbc31%3aaa288e2d%3a258f1c72%3a7165f74%3a874f8ea2, line 2030: Using //@ to indicate sourceMappingURL pragmas is deprecated. Use //# instead
JavaScript warning: http://IP_XXXXXXXX/XXXXXX/Telerik.Web.UI.WebResource.axd?_TSM_HiddenField_=DefaultMasterScriptManager_TSM&compress=1&_TSM_CombinedScripts_=%3b%3bSystem.Web.Extensions%2c+Version%3d4.0.0.0%2c+Culture%3dneutral%2c+PublicKeyToken%3d31bf3856ad364e35%3aen-US%3a4ae4914f-8c8e-4123-9d05-414d87b48357%3aea597d4b%3ab25378d2%3bTelerik.Web.UI%2c+Version%3d2014.1.225.40%2c+Culture%3dneutral%2c+PublicKeyToken%3d121fae78165ba3d4%3aen-US%3afe3df733-ee56-4563-8789-bc399360084a%3a16e4e7cd%3aed16cbdc%3af7645509%3a88144a7a%3a24ee1bba%3a92fe8ea0%3afa31b949%3a19620875%3a874f8ea2%3af46195d3%3a490a9d4e%3abd8f85e4%3a7165f74%3ab7778d6c%3a2003d0b8%3a1e771326%3aaa288e2d%3a258f1c72%3a8674cba1%3a7c926187%3a2e42e72a%3aa51ee93e%3aef347303%3ac08e9f8a%3a2bef5fcc%3ae06b58fd%3ae085fe68%3aa9b7ace7, line 2030: Using //@ to indicate sourceMappingURL pragmas is deprecated. Use //# instead
[Parent 19988, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
[Parent 19988, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
[Child 6324, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
[Child 6324, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_chann[Cehildl_win. 19cc, lin648, Chrome_Ce 346
hildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
[Parent 19988, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
[Child 19204, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
[Child 19204, Chrome_ChildThread] *** UTM:SVC TimerManager:registerTimer called after profile-before-change notification. Ignoring timer registration for id: telemetry_modules_ping
[GPU 19676, Chrome_ChildThread] WARNIN
###!!! [Child][MessageChannel::SendAndWait] Error: Channel error: cannot send/recv
杰夫

从我们在评论中的对话来看,您似乎混淆了一些事情。

在浏览器控制台中,执行$x()返回元素集合,因此$x().click()不起作用,因为您无法单击整个集合。如果您使用数组表示法,您可以指定要单击的集合的成员,例如$x()[0].click()将单击集合中的第一个元素。

要将其转换为 Java/Selenium,driver.findElements()(复数)在某种程度上相当于$x()它们,因为它们都返回元素的集合。如果你使用driver.findElement()(singular),它被设计为即使定位了多个元素也只返回第一个元素。因此,driver.findElement().click()即使使用的定位器找到多个元素,您也可以安全地使用。

如果您想使用返回多个元素但不想只获取第一个元素的定位器,您可以使用.get(x)wherex是集合中所需元素的索引。例如,driver.findElements().get(1)将返回第二个元素(0 是第一个元素的索引,1 是第二个元素的索引,依此类推)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

jQuery通过xpath选择元素

Knockoutjs模板:通过某些属性过滤数组后,如何将1个对象数组用于2个DOM元素?

如何通过XPath选择第一个和最后一个元素?

通过xpath查找元素,然后单击它

通过从n个数组中选择最多1个元素来查找n个数组中的m个元素

装箱与创建1个元素的数组

循环通过数组求一个元素的和

通过在下一个块中仅添加1个元素来在javascript中分块数组

通过函数无法显示数组的第n个元素

链接具有Javascript时,无法通过XPath查找元素

通过Xpath在另一个元素中查找元素

无法从《科学杂志》(Science Magazine)获得xpath,它返回一个没有元素的列表

无法通过ID或XPath查找输入元素

硒无法通过ID或xpath找到元素

是否可以通过引用第n + 1个元素来找到数组末尾的地址?

无法通过iFrame中的xpath单击元素-Selenium

Selenium:无法通过XPATH Python查找元素

使用Selenium和Python无法通过xpath定位元素

通过数组进行迭代从数组中读取n-1个元素

硒无法通过xpath查找元素

耳机无法通过1个插头工作

无法通过xpath定位元素

如何通过 XPath 选择依赖于另一个元素的元素

无法使用 xpath 选择元素

Selenium 无法通过 xpath 或类找到元素

Python Selenium 无法通过类名和 xpath 找到元素

无法通过 xpath 通过 selenium chrome 驱动程序单击 Web 元素

无法排除 xpath 中的最后一个元素

无法通过 css 或 xpath 获取元素值