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

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 返回手机列表时,我遇到了定位手机的问题。我想找到第一个元素并单击以便它在新选项卡中打开。


谁能帮我这个?谢谢!


当年话下
浏览 386回答 3
3回答

米琪卡哇伊

您可以使用硒中的列表类存储在列表中。列表 lists=driver.findElements(By.xpath("..")); 列表.get(0).click();//上面的代码用于单击列表中的第一个元素

ABOUTYOU

当您使用browser.find_elements_by_xpath("//div[@class='_3wU53n']")p 时,它将是一个列表,因此您可以像 p[0] 一样轻松地访问项目,更多信息在这里。但是如果你只需要第一个元素,我建议你不使用browser.find_element_by_xpath("//div[@class='_3wU53n']")“s”,因为它应该选择那个类中的第一个元素

斯蒂芬大帝

一旦您“点击”搜索按钮,网页将重定向到一个显示手机列表的新页面。但是,加载页面需要一些时间。所以你需要给它加一些延迟,以便执行接下来的动作。<the code above remains the same>browser.find_element_by_xpath("//button[@class='vh79eN']").click()import timetime.sleep(3) # Added a delaybrowser.find_element_by_xpath("//div[@class='_3wU53n']").click() # Changed the "elements" to "element"这将在新选项卡中打开第一个手机。附言。如果您只需要第一部手机,此代码非常有用。如果您需要页面上的所有手机,则必须为其创建一个循环!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript