Python 如何单击selenium中的按钮?
当我想要selenium单击此代码按钮时,selenium会向我写入此错误 这是我的代码:Python 如何单击selenium中的按钮?,python,selenium,xpath,css-selectors,webdriverwait,Python,Selenium,Xpath,Css Selectors,Webdriverwait,当我想要selenium单击此代码按钮时,selenium会向我写入此错误 这是我的代码: #LOGIN IN WEBSITE browser = webdriver.Firefox() browser.get("http://class.apphafez.ir/") username_input = browser.find_element_by_css_selector("input[name='UserName']")
#LOGIN IN WEBSITE
browser = webdriver.Firefox()
browser.get("http://class.apphafez.ir/")
username_input = browser.find_element_by_css_selector("input[name='UserName']")
password_input = browser.find_element_by_css_selector("input[name='Password']")
username_input.send_keys(username_entry.get())
password_input.send_keys(password_entry.get())
button_go = browser.find_element_by_xpath("//button[@type='submit']")
button_go.click()
#GO CLASS
wait = WebDriverWait(browser , 10)
go_to_class = wait.until(EC.element_to_be_clickable((By.XPATH , ("//div[@class='btn btn- palegreen enterClassBtn'"))))
go_to_class.click()
这是站点代码:
<div class="databox-row padding-10">
<button data-bind="attr: { 'data-weekscheduleId' : Id}" style="width:100%" class="btn btn-palegreen enterClassBtn" data-weekscheduleid="320">"i want to ckick here"</button>
“我想在这里打电话”
这是我的程序错误:
File "hafezlearn.py", line 33, in login_use
go_to_class = wait.until(EC.element_to_be_clickable((By.XPATH , ("//div[@class='btn btn- palegreen enterClassBtn'"))))
File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/support/wait.py", line 80, in until
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:
</div>
文件“hafezlearn.py”,第33行,登录时使用
go_to_class=wait.until(EC.element_to_可点击((By.XPATH,(“//div[@class='btn btn-palegreen enterClassBtn')))
文件“/usr/local/lib/python3.8/dist-packages/selenium/webdriver/support/wait.py”,第80行,直到
引发TimeoutException(消息、屏幕、堆栈跟踪)
selenium.common.Exception.TimeoutException:消息:
您已经足够接近了。class属性的值是btn btn palegreen enterClassBtn
但不是btn btn-palegreen enterClassBtn
,您不能在属性值中添加额外的空格
解决方案 要单击元素,您需要使
元素成为可单击的()
,您可以使用以下任一选项:
- 使用
:CSS\u选择器
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.btn.btn-palegreen.enterClassBtn[data-bind*='data-weekscheduleId']"))).click()
- 使用
:XPATH
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='btn btn-palegreen enterClassBtn' and text()='i want to ckick here'][contains(@data-bind, 'data-weekscheduleId')]"))).click()
- 注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
button.btn.btn-palegreen.enterClassBtn
具体而言:
go_to_class = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR , ("button.btn.btn-palegreen.enterClassBtn"))))
另请参见这是我的错误:文件“hafezlearn.py”,第33行,在login_use go_to_class=wait.until(EC.element_to_be_可点击((By.XPATH,(“//div[@class='btn btn palegreen enterClassBtn'))文件/usr/local/lib/python3.8/dist packages/selenium/webdriver/support/wait.py)第80行,在until-raise-TimeoutException中(消息、屏幕、堆栈跟踪)selenium.common.exceptions.TimeoutException:message:Tnx