繁体   English   中英

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

[英]How to find the first element if Xpath returns a list of elements(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 返回移动设备列表。 我想找到第一个元素并单击以在新选项卡中打开它。

谁能帮我这个? 谢谢!

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

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

您可以使用 selenium 中的 list 类存储在 List 中。

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

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

“单击”搜索按钮后,网页将重定向到显示移动设备列表的新页面。 但是,加载页面需要一些时间。 所以你需要给它添加一些延迟,以便执行接下来的操作。

<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"

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

附注。 如果您只需要第一个手机,此代码效果很好。 如果您需要页面上的所有手机,则必须为它创建一个循环!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM