在多个页面中搜索特定元素并单击使用 Python Selenium

Search for a specific element in multiple pages and click using Python Selenium

您好,我正在尝试从第 1 页导航到第 5 页(该元素可以在任何页面中)并使用 python selenium 查找并单击特定元素。 以下是页面中的元素:

<span _ngcontent-mtx-c123"" class"ng-star-inserted">ABC Company</span>

我尝试使用:driver.find_element_by_name("ABC Company").click() 但这不起作用。 我尝试的另一种方式:

1. element_path="//span[contains(text(),'ABC Company')]" 
2. while True: 
3.  if(driver.find_elements_by_xpath(element_xpath)): driver.find_element_by_xpath(element_xpath).click() 
4.  else: driver.find_element_by_xpath("xpath to goto next page").click()

我需要代码从下一页中查找元素,直到找到并单击它。

还有其他方法吗???

提前致谢

首先,您需要检查该元素是否存在,只有存在时才单击它。否则,您将在尝试单击不存在的元素时出现异常。
driver.find_elements returns 与传递的定位器匹配的网络元素列表。因此,如果有这样的元素,它将 return 非空列表解释为 Python 的 True。否则空列表被 returned 解释为 False.
关于您要查找的元素的定位器:您可以根据元素包含的文本来定位该元素。可以用 XPath 来完成。
如下:

element_xpath = "//span[contains(text(),'ABC Company')]"
if(driver.find_elements_by_xpath(element_xpath)):
    driver.find_element_by_xpath(element_xpath).click()

如果您需要动态更新 XPath 定位器,您可以将文本作为参数传递。假设您有一个文本列表,您可以按如下方式对其进行迭代:

for txt in texts:
    element_xpath = "//span[contains(text(),'{}')]".format(txt)
    if(driver.find_elements_by_xpath(element_xpath)):
        driver.find_element_by_xpath(element_xpath).click()