在多个页面中搜索特定元素并单击使用 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()
您好,我正在尝试从第 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()