RSelenium选择具有动态ID的XPath

时间:2018-06-25 14:23:16

标签: r selenium xpath dynamic rselenium

我正在使用RSelenium软件包,遇到了无法解决的问题。我正在尝试从网页上的表格中选择一个元素,然后单击它,通常我会使用

remdr$findElment('xpath',*insertxpathhere*)$clickElement()

remdr是远程会话。我遇到的问题是,每次页面加载时,我尝试选择的元素的xpath都会更改。我将页面重新加载了3次,并在下面复制了元素的xpath,以便您了解它的变化。

//*[@id="libraryPicker-1529934941230-datasets"]/div[2]/div/table/tbody/tr[5]/td[2]

//*[@id="libraryPicker-1529936019517-datasets"]/div[2]/div/table/tbody/tr[5]/td[2]

//*[@id="libraryPicker-1529936071347-datasets"]/div[2]/div/table/tbody/tr[5]/td[2]

如您所见,每次页面加载时13位数字都会更改,并且似乎没有任何可辨别的模式,这使我可以创建一堆虚拟xpath并检查是否可行。我曾考虑过使用通配符元素(例如// * [@@ =“ =” libraryPicker- wildcardelement )),但找不到在R中实现通配符的方法。该元素的css选择器在同样的方式。

尽管每次脚本都更改其xpath标识符,但每次运行脚本时我都需要某种方法来标识该元素。

有人可以帮助我吗?谢谢!

1 个答案:

答案 0 :(得分:0)

根据您的代码试验来确定元素,可以使用以下 xpath

//*[starts-with(@id,'libraryPicker')][contains(@id,'datasets')]/div[2]/div/table/tbody/tr[5]/td[2]