单击带有Selenium按钮的按钮



我想点击"同意";按钮在这个网站https://www.soccerstats.com/matches.asp?matchday=1#,但它没有为我工作使用这个代码:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time
s=Service("C:/Users/dhias/OneDrive/Bureau/stgg/chromedriver.exe")
driver=webdriver.Chrome(service=s)
driver.get("https://www.soccerstats.com/matches.asp?matchday=1#")
driver.maximize_window()
time.sleep(1)
driver.find_element(By.CLASS_NAME," css-47sehv").click()

css-47sehv是按钮的类名,这里是按钮的图片,蓝色按钮

虽然元素AGREE包含classnamecss-47sehv,但该值看起来是动态的,可能会在短时间内或一旦应用程序重新启动后发生变化。


解决方案要单击元素,需要为element_to_be_clickable()诱导WebDriverWait,您可以使用以下定位器策略:

使用
  • CSS_SELECTOR:

    driver.get("https://www.soccerstats.com/matches.asp?matchday=1#")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[mode='primary']"))).click()
    
  • 使用<<li>em> XPATH :

    driver.get("https://www.soccerstats.com/matches.asp?matchday=1#")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@mode='primary' and text()='AGREE']"))).click()
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

您必须确保以下内容:

1-明确使用Wait来等待按钮出现

try:
element=WebDriverWait(driver,10).until(
EC.presence_of_element_located((By.ID, "AgreeButton"))
)
finally:
driver.quit()

2-用正确的Xpath点击按钮:

driver.find_element(By.XPATH,"//button[text()='AGREE']").click()

3-如果简单的点击不起作用,你可以使用JavaScript和执行方法点击。

尝试使用

driver.find_element_by_class_name('css-47sehv').click()

代替

driver.find_element(By.CLASS_NAME," css-47sehv").click()

单击AGREE按钮,使用下面的xpath来识别元素并单击。

//button[text()='AGREE']

代码:

driver.find_element(By.XPATH,"//button[text()='AGREE']").click()

或者使用下面的css选择器

driver.find_element(By.CSS_SELECTOR,"button.css-47sehv").click()

相关内容

  • 没有找到相关文章

最新更新