[英]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("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("https://xsad.com/xsd.jpg") 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 个值: innerImageWrapper
和editlink
。 要通过 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.