Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何单击selenium中的按钮?_Python_Selenium_Xpath_Css Selectors_Webdriverwait - Fatal编程技术网

Python 如何单击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']")

当我想要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']")
    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
    

css值的多个类名很难处理。通常最简单的方法是使用css选择器:

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