python - Python/Selenium 按钮单击类不起作用
问题描述
<fieldset class = "A">
::before
<button class = "ButtonA" type ="submit">
::before
Click Me
</button>
::after
</fieldset>
我正在尝试打开一个页面并单击页面上的一个按钮。但是,无论我调用什么函数,它都会抛出相同的消息,告诉我的类不存在,但是,我很肯定它确实存在。我没有看到它嵌套在 iFrame 中。那么我在这里不明白什么,如果我正在寻找一个 html 类,为什么它会为 css 选择器引发错误。
我收到以下错误
File "C:\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 564, in find_element_by_class_name
return self.find_element(by=By.CLASS_NAME, value=name)`
File "C:\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 976, in find_element
return self.execute(Command.FIND_ELEMENT, { `
File "C:\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)`
File "C:\Python38\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response`
raise exception_class(message, screen, stacktrace)selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".ButtonA"}`
driver.get("https://www.websiteWithButton.com")
#ensure html is loaded
driver.implicitly_wait(10)
#check for iFrame
#driver.switch_to.frame('PossibleiFrame')
#ButtonA is a a class that exists, I'm positive.
button = driver.find_element_by_class_name('ButtonA')
button.click()
解决方案
我只是给出我的整个解决方案。根据你的步骤
driver.get("https://www.websiteWithButton.com")
#ensure html is loaded
driver.implicitly_wait(10)
#check for iFrame
#driver.switch_to.frame('PossibleiFrame')
#ButtonA is a a class that exists, I'm positive.
button_list = driver.find_elements_by_tag('button')
for i, x in enumerate(button_list):
print(f'Index: {i}')
x.click() # you can find the index of ButtonA you want by click them step by step
得到index
后ButtonA
,直接点击即可
button_list[index].click()
。反映在页面源中的位置
,只要页面源不变,就可以访问。
这可能不是一个聪明的方法,但至少你可以找到你想要的按钮元素,只要你在正确的页面中。index
ButtonA
推荐阅读
- excel - 从 2 列中获取符合条件的条目总和
- c# - 在 C# WPF 应用程序中使用 ffmpeg 编辑 m4b 元数据
- obiee - 我是否需要在服务器上部署两个 RPD 才能通过同一个 OBIEE 工具在这两者之间切换?
- python-3.x - Python 3 图形用户界面程序
- reactjs - 如何使用带重置按钮的 Formik 重置反应选择单输入
- selenium - 无法在用户名框中执行 Sendkeys()。它使用 Selenium Webdriver 显示 Elementnotinteractable 异常
- javascript - 使用 react-router-dom 在 redux 操作中重定向
- mysql - 如何在sql中的更新语句后运行插入
- amazon-web-services - Aws Lambda 以不同方式处理冷启动请求
- c++ - 如何告诉我的程序如果它找到给定的字符串来运行下面的代码