-1

你好我正在尝试登录网站https://golden77.com但无法登录它给出以下错误

selenium.common.exceptions.ElementClickInterceptedException: Message: Element <button class="btn btn-primary ml-2"> is not clickable at point (1278,72) because another element <div id="login" class="modal fade show modal-login-new"> obscures it.

这是我的代码:- from seleniumwire import webdriver from selenium.webdriver.common.keys import Keys from time import sleep from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support将 expected_conditions 导入为 EC

options=webdriver.FirefoxOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--ignore-ssl-errors')
options.add_argument('--ignore-certificate-errors')

driver = webdriver.Firefox(executable_path='geckodriver.exe',firefox_options=options)
driver.get("https://golden77.com")
# print(driver.requests)
sleep(10)
sleep(50)
btn_login = driver.find_element_by_xpath("//button[@class='btn btn-primary ml-2']") #<button class="btn btn-primary ml-2">Login</button>
btn_login.click()
sleep(10)
username = driver.find_element_by_xpath("//input[contains(@class,'form-control')][@placeholder='Enter Username']")
username.send_keys("username")
sleep(20)
password = driver.find_element_by_xpath("//input[contains(@class,'form-control')][@placeholder='Enter Password']")
password.send_keys("password")
sleep(3)
try:
    checkbox=driver.find_element_by_class_name("custom-control-label")
    checkbox.click() #check the checkbox
except:
    pass
sleep(10)


lg_btn = driver.find_element_by_xpath("//button[@class='btn btn-primary ml-2']") # login button 
prop = lg_btn.get_property("disabled")
print(prop)
lg_btn.click

我也试过

driver.execute_script("arguments[0].click()",lg_btn)

(此代码没有给出错误并且没有让我登录)参考https://golden77.com的实际网页代码并帮助我!

4

1 回答 1

0

您现在在代码中遇到的两个问题。

  1. 您用于复选框的类有 3 个 web 元素。所以它会点击第一个元素。

  2. 当您实际单击警报弹出窗口中的登录按钮时,您没有使用正确的登录 Web 元素定位器。

修复问题 1:

try:
    checkbox=driver.find_element_by_id("customCheck")
    checkbox.click() #check the checkbox
except:
    pass

修复问题 2:

而不是这个:

lg_btn = driver.find_element_by_xpath("//button[@class='btn btn-primary ml-2']")

用这个 :

 lg_btn = driver.find_element_by_xpath("//button[@type='submit']")

更新 1:

driver = webdriver.Chrome("C:\\Users\\Desktop\\Selenium+Python\\chromedriver.exe")
driver.maximize_window()
wait = WebDriverWait(driver, 30)
driver.get("https://golden77.com")
# print(driver.requests)
btn_login = wait.until(EC.element_to_be_clickable((By.XPATH, "//button[text()='Login']"))) #<button class="btn btn-primary ml-2">Login</button>
btn_login.click()
username = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "label.user-email-text+input[type='text']")))
username.send_keys("username")
password = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "label.user-email-text+input[type='password']")))
password.send_keys("password")
driver.execute_script("document.getElementsByName('example1')[0].click();")
lg_btn = driver.find_element_by_xpath("//button[@type='submit']") # login button
prop = lg_btn.get_property("disabled")
print(prop)
lg_btn.click()
于 2021-05-21T15:45:48.400 回答