我尝试单击以下元素,类名等于<code>“clean right”:
<li class="clean right"></li>
如何使用<code>驱动程序定位它。find_element_by_class_name()
之前的回答部分不正确。请在以下位置查看源代码:
https://github.com/SeleniumHQ/selenium/blob/9160de55af9cc230f758f4ce6a2af8d1570f0614/py/selenium/webdriver/remote/webdriver.py
您可以将class_name用于多个类,只需将空格替换为“。”
将类与空格一起使用的示例:
from selenium import webdriver
from time import sleep
options = webdriver.ChromeOptions()
#options.headless = True
options.add_argument("--window-size=1920,1080")
options.add_argument("--headless")
options.add_argument("--disable-gpu")
options.add_argument(
"user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36")
browser = webdriver.Chrome(options=options)
browser.get("https://www.instagram.com")
sleep(5)
#browser.refresh()
elem=browser.find_element_by_class_name('RP4i1.UVauz')
print(elem.get_attribute("outerHTML"))
browser.get_screenshot_as_file(f"screenshot.png")
输出:
<img class="RP4i1 UVauz" src="/static/images/homepage/screenshot1.jpg/d6bf0c928b5a.jpg" alt="">
如果您从by_class_name检查例外:
您可以看到它在引擎盖下使用css_class定位器(您可以看到它在前面自动添加)。
另一个工作示例:
from selenium import webdriver
import time
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("https://stackoverflow.com/questions/65579491/find-element-by-class-name-in-selenium-giving-error/65579606?noredirect=1#comment115946541_65579606")
time.sleep(5)
elem = driver.find_element_by_class_name('overflow-x-auto.ml-auto.-secondary.grid.ai-center.list-reset.h100')
print(elem.get_attribute("outerHTML"))
您不能通过<code>find_element_by_class_name()
invalid selector: Compound class names not permitted
有多种方法可以解决此用例,您可以使用以下定位器策略之一:
>
如果元素仅通过类名
清洁
唯一标识,您可以使用:
driver.find_element_by_class_name("clean")
如果元素仅通过类名
权限
唯一标识,则可以使用:
driver.find_element_by_class_name("right")
如果<code>类名称、<code>clean和<code>right
driver.find_element_by_css_selector("li.clean.right")
或者,您也可以使用xpath,如下所示:
driver.find_element_by_xpath("//li[@class='clean right']")
无效选择器:不允许复合类名使用Selenium时出错
通过多个类名查找div元素?
问题内容: 我正在将selenium与python配合使用,现在我想按其ID名称的一部分来定位元素,该怎么办? 例如,现在我已经找到了一个ID为 coption5的商品 : 无论如何,我只能使用 coption 来定位此元素吗? 问题答案: 要查找您所在的元素: 要仅通过使用 coption 来定位此元素,可以使用以下 定位策略之一: 使用和: 使用和: 使用和(开头为通配符): 使用和(包含通配
检查的元素。尝试用各种方法在代码中查找元素。但一切都不起作用。请建议在应用程序中编辑PIN号码的xpath应该是什么 null Driver.FindElementByXPath(“//Android.Widget.FrameLayout//Android.View.View[@index='3']//Android.Widget.EditText”)
问题内容: 我想识别该网络元素。它仅定义了这两个类。我不能执行以下操作,因为不使用空格分隔的值。什么是替代品? 问题答案: 我认为巴拉克·马诺斯的答案不能完全解释这一点。 想象一下,我们只有以下几个元素: XPath如何匹配 只匹配1个(完全匹配),巴拉克的答案 比赛1,比赛2和比赛3(比赛类别包含,课程顺序很重要) 匹配1、2、3和4(只要元素具有class 和) 同样,在这种情况下,Css S
下面的代码做了我需要它做的事情,除非它遇到一个缺少class_name的产品,比如说product-price。我需要帮助的是如何跳过那个特定的项目,转移到下一个项目。目前我得到以下错误: Traceback(最近调用最后):文件“/users/user/pycharmprojects/test/homedepotdishwashers.py”,第31行,打印(model.text,price.t
问题内容: 我无法使用解析具有属性的元素。代码看起来像这样 脚本完成后的同一行出现错误。 如何摆脱这个错误? 问题答案: 你可以使用BS3优化搜索以仅找到具有给定类的那些div:
问题内容: 我有一个脱机菜单,可以在网站上完美运行。用户既可以使用导航键也可以用手指滑动它来打开和关闭它。 现在,我有一个非常不错的navicon图标,当单击(并打开菜单)时,它会从菜单图标过渡到X图标,反之,当再次单击并关闭菜单时,它又会转变为X图标。Buuut,如果用户将菜单滑动到打开或关闭而不是使用导航按钮的状态,则不会触发过渡,这可能会导致UX混乱(即,菜单被关闭,并且导航按钮显示X而不是