为了账号安全,请及时绑定邮箱和手机立即绑定

如果 Xpath 返回元素列表(selenium-python),如何找到第一个元素

如果 Xpath 返回元素列表(selenium-python),如何找到第一个元素

当年话下 2023-03-10 14:52:27
browser = webdriver.Chrome(path)browser.maximize_window()browser.get("https://www.flipkart.com")browser.find_element_by_xpath('//button[@class="_2AkmmA _29YdH8"]').click()browser.find_element_by_name("q").send_keys("Mobiles")browser.find_element_by_xpath("//button[@class='vh79eN']").click()p = browser.find_elements_by_xpath("//div[@class='_3wU53n']")使用上面的代码,我必须在 flipkart 中搜索Mobiles并单击任何应该在新选项卡上打开页面的 Mobile。当 Xpath 返回手机列表时,我遇到了定位手机的问题。我想找到第一个元素并单击以便它在新选项卡中打开。谁能帮我这个?谢谢!
查看完整描述

3 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

您可以使用硒中的列表类存储在列表中。

列表 lists=driver.findElements(By.xpath("..")); 列表.get(0).click();

//上面的代码用于单击列表中的第一个元素



查看完整回答
反对 回复 2023-03-10
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

当您使用browser.find_elements_by_xpath("//div[@class='_3wU53n']")p 时,它将是一个列表,因此您可以像 p[0] 一样轻松地访问项目,更多信息在这里

但是如果你只需要第一个元素,我建议你不使用browser.find_element_by_xpath("//div[@class='_3wU53n']")“s”,因为它应该选择那个类中的第一个元素


查看完整回答
反对 回复 2023-03-10
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

一旦您“点击”搜索按钮,网页将重定向到一个显示手机列表的新页面。但是,加载页面需要一些时间。所以你需要给它加一些延迟,以便执行接下来的动作。


<the code above remains the same>

browser.find_element_by_xpath("//button[@class='vh79eN']").click()

import time

time.sleep(3) # Added a delay

browser.find_element_by_xpath("//div[@class='_3wU53n']").click() # Changed the "elements" to "element"

这将在新选项卡中打开第一个手机。


附言。如果您只需要第一部手机,此代码非常有用。如果您需要页面上的所有手机,则必须为其创建一个循环!


查看完整回答
反对 回复 2023-03-10
  • 3 回答
  • 0 关注
  • 385 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号