繁体   English   中英

在 Python 中按 class 名称与 Selenium 查找元素

[英]Find elements by class name with Selenium in Python

<div class="innerImageOuterWrapper">
  <div class="innerImageWrapper editlink" id="imageGridWrapper_15961315" ximgid="23232323" onclick="displayEditImageBox('IMSIMAGE:ASDASD', 233232, 'new')" style="background: transparent url(&quot;https://xsad.com/xsd.jpg;) center center / cover no-repeat;">
    <img src="https://xsad.com/xsd.jpg" class="thumbnail scaleimg" id="imageGridimage_15961315" style="display: none;" wfd-invisible="true">
  </div>
  <div class="innerImageWrapper editlink" id="imageGridWrapper_15961314" ximgid="15961314" onclick="displayEditImageBox('IMSIMAGE:ASDASD23', 15961314, 'new')" style="background: transparent url(&quot;https://xsad.com/xsd.jpg&quot;) center center / cover no-repeat;">
    <img src="https://xsad.com/xsdsd.jpg" class="thumbnail scaleimg" id="imageGridimage_15961314" style="display: none;" wfd-invisible="true">
  </div>
</div>

我想单击 class 为“innerImageWrapper editlink”的元素。

我用这段代码

driver.find_elements(by=By.CLASS_NAME, value="innerImageWrapper editlink").click()

但它不工作。

driver.find_element(by=By.XPATH,
                                value='//*[@id="imageGridWrapper_15961314"').click()

它的工作。 但我不想使用 xpath。我想使用 class 名称

By.CLASS_NAME接收单个值,而您在这里尝试传递 2 个值: innerImageWrappereditlink 要通过 2 class 名称定位元素,您可以使用 CSS 选择器或 XPath,但不能使用CLASS_NAME
因此,您可以使用以下其中一项:

driver.find_element(By.CSS_SELECTOR, ".innerImageWrapper.editlink").click()

或者

driver.find_element(By.XPATH, "//*[@class='innerImageWrapper editlink]").click()

此外, find_elements返回一个包含 web 个元素的列表,您不能对其应用click()
如果你想点击单个元素,或者如果你想点击多个元素,你应该使用find_element ,你需要遍历元素列表并点击它们中的每一个,如下所示:

elements = driver.find_elements(By.CSS_SELECTOR, ".innerImageWrapper.editlink")
for element in elements:
    element.click()

暂无
暂无

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

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