查找其 Xpath 对每个登录唯一的元素

Finding an element whose Xpath is unique to each login

我正在编写 python 网络自动化 selenium 脚本。

在脚本中,我使用 driver.find_element_by_xpath('xpath') 在 Binary.com 上查找元素。这意味着我必须预加载 Binary.com 并复制我需要查找的元素的 xpath。对于大多数元素,该方法都有效,但对于少数元素,我意识到 Xpath 对于每个登录都是唯一的。

例如,如果我现在登录并尝试复制某个元素的 xpath,它将是 //*[@id="tp1602844250562"],但如果重新加载页面或我尝试登录不同的 window然后 xpath 将更改为 //*[@id="tp1602844157070"]。请注意,它们不是相同的 ID 号。这意味着我不能在单独的页面上使用一个 xpath login

所需元素具有 HTML 代码:

<input type="text" class="time hasTimepicker" tab-index="-1" value="00:00" readonly="" id="tp1602844157070">

请参阅提供的图像以获得清晰的 html 代码

为什么不使用 class 而不是 id?试试这个 xpath:

driver.find_element_by_xpath('//input[@class = "time hasTimepicker"]')

尝试将您的 xpath 表达式更改为

//input[starts-with(@id,"tp")]

或者,如果不总是 input

//*[starts-with(@id,"tp")]

您可以在下面尝试使用 class 而不是 id,因为我猜 id 是从数据库中提取的-

//div[@class='date-time']//input[contains(@class,'time')]

要查找带有 class 的输入元素,请使用。

driver.find_element_by_css_selector("input.time.hasTimepicker")