gpt4 book ai didi

python - 如何在python中使用 Selenium 单击与另一个元素相同的元素?

转载 作者:行者123 更新时间:2023-12-04 10:50:15 24 4
gpt4 key购买 nike

我想单击一个按钮元素,该元素与同一页面上的另一个按钮元素相同,但一个在前面,一个在后面(见图)。我怎样才能做到这一点?
第一个 x 按钮的 html 代码如下:

 <div id="ModalPopAmityHostel" class="modal fade in" role="dialog" aria-hidden="false" style="display: block;">
<div class="modal-dialog " style="z-index:104546464; ">

<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Amity Hostel</h4>
</div>

第二个 x 按钮的 html 代码是:
<div id="StudentSatisfactionPop" class="modal fade in" role="dialog" aria-hidden="false" style="display: block; padding-right: 15px;">
<div class="modal-dialog">

<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">STUDENT SATISFACTION SURVEY </h4>
</div>

这是我在 python 中使用 Selenium 的代码:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By

chromedriver = "/usr/share/chromedriver/chromedriver"
driver = webdriver.Chrome(chromedriver)
driver.maximize_window()
#wait = WebDriverWait(driver, 1)
driver.get("https://student.amizone.net")
# 3 | type | name=_UserName | 7071804 |
driver.find_element(By.NAME, "_UserName").send_keys("username")
# 4 | type | name=_Password | 62ae6f |
driver.find_element(By.NAME, "_Password").send_keys("password")
# 9 | click | css=#loginform .login100-form-btn | |
driver.find_element(By.CSS_SELECTOR, "#loginform .login100-form-btn").click()
driver.implicitly_wait(10)
driver.find_element(By.CLASS_NAME, "close").click()

它给出了这个错误:
Traceback (most recent call last):
File "amizone_automated_login.py", line 36, in <module>
driver.find_element(By.CLASS_NAME, "close").click()
File "/home/manik/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webelement.py", line 80, in click
self._execute(Command.CLICK_ELEMENT)
File "/home/manik/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webelement.py", line 633, in _execute
return self._parent.execute(command, params)
File "/home/manik/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/home/manik/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
(Session info: chrome=79.0.3945.88)

这是页面: enter image description here

我认为错误即将到来是因为它单击了弹出窗口后面的 x 按钮,因为它首先出现在 html 脚本中。有没有办法点击前面的x按钮?

最佳答案

而不是通过 classname 直接获取元素你应该通过 id 获取使用在 xpath 中,因为 id两个窗口的不同。
您可以使用以下命令关闭第一个窗口:

driver.find_element(By.XPATH, "//div[@id='ModalPopAmityHostel']//button[@class='close']").click()

在点击第一个关闭按钮后,您可以以类似的方式点击第二个关闭按钮,您只需要将 id 替换为 StudentSatisfactionPop

关于python - 如何在python中使用 Selenium 单击与另一个元素相同的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59514312/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com