By.XPATH Selenium 的自动点击问题

By.XPATH problem in an automatic click with Selenium

我想自动点击点赞的蓝色标志(拇指在里面的那个),以打开已点赞的人列表。我指的是这个蓝色的小标志:

在这个问题中,我只想关注这个小请求,这个小点击。我认为我做对了,但肯定有问题。我使用了 By.XPATH.,更准确地说://*[@id="jsc_c_z"]/span[1]/span/span/div

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="jsc_c_z"]/span[1]/span/span/div'))).click()

注意:我注意到此页面上的 ID 和范围看起来混淆不清,因此它们不一定每次都相同。所以也许我认为 id = "jsc_c_z" 是不可靠的。您可能需要求助于在目标元素 div.

上使用属性的 aria-labeld

这是 link 我想打开 https://www.facebook.com/FranzKafkaAuthor/posts/3985338151528881

重要提示:您必须使用 Facebook 登录名输入,但不想这样做的人会 post 截图

希望有人能帮助我。谢谢

嘿,你可以像这样尝试 Xpath,

//*[@id="jsc_c_z"]/span[3]/div/img

因为图片标签有 link 而不是 div 标签 如果它不起作用,请尝试在找到 div.

时添加 arial 标签

此页面中的 ID 和跨度看起来很可疑,因此不一定每次都相同。我认为 id="jsc_c_z" 不可靠。您可能需要求助于在目标 div 元素上使用 aria-label 属性。我无法对此进行测试,但 xpath 将类似于;

//div[starts-with(@aria-label,'Mi piace:')]

当然,如果您运行使用不同语言的用户,则需要更改该文本。

我自己解决了。解决方案是:

 WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@class='j1lvzwm4']"))).click()