如何找到任何 "city" 变量下拉列表的 Xpath?

How to find Xpath of any "city" of variable dropdown?

  1. 我安装了 Chrome 插件“Selectors Hub”。

  2. 我打开了站点:spicejet.com

  3. 我从“来自”下拉列表中随机选择了一些城市。

  4. 在“Selectors Hub”chrome 插件的帮助下,我获取了 Xpath 代码 那个城市:

    //div[@class='css-1dbjc4n r-14lw9ot r-z2wwpe r-vgw6uq r-156q2ks r-urutk0 r-8uuktl r-136ojw6']//div[11]

在控制台中验证此 Xpath 代码时,它显示 0 个匹配项。

这个网站是建立在 ReactJs 上的 front-end,如果我没记错的话,找到 ReactJs 网站的元素有点挑战;除此之外,如果您依赖某些定位器查找工具,它会变得更加困难。构建自己的定位器策略总是比依赖工具更好,尤其是对于使用 React、Vue 等构建的网站。

话虽如此,这里的策略是找到相对缩小的相对定位器,然后由于您正在寻找随机选择的城市,因此先收集所有城市,然后对其应用random .这是它的计算结果:

我收集了城市,但随之而来的是一些不需要的物品(由我的相对定位器提供),我会检查它们,如果它们被捡起,我就会把它们分发出去,只有当一个城市被随机选择时,我点击它。检查此代码:

import random    

driver.get("https://www.spicejet.com/")
time.sleep(10)
driver.find_element(By.XPATH, "//div[@data-testid='to-testID-destination']").click()
time.sleep(2)
cities = driver.find_elements(By.XPATH, "//div[@data-testid='to-testID-destination']//div[@data-focusable='true']")
print(len(cities))
x = random.choice(cities)
if x.text in ['To', 'India', 'International']:
    pass
else:
    print(x.text)
    x.click()
time.sleep(5)
driver.quit()

输出:

Pakyong
Pakyong Airport
PYG

Process finished with exit code 0