Python Selenium 无法从 iframe 获取按钮

Python Selenium cannot get button from iframe

enter image description here我想点击位于网站中心的名为“바카라멀티플레이”的按钮。我切换到 iframe,但它似乎没有检测到按钮。我该怎么办?

from selenium import webdriver
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common import exceptions
import sys
import asyncio

"""
    Chromedriver Options / Driver setting
"""
options = webdriver.ChromeOptions()
#ptions.add_argument('headless')
options.add_argument('window-size=1920,1080')
options.add_argument("disable-gpu")

driver = webdriver.Chrome(executable_path='C:/chromedriver/chromedriver.exe', chrome_options=options)

driver.get('https://ggl-maxim.com/')

driver.find_element_by_xpath('//*[@id="body"]/div/div[2]/div/div[2]/fieldset/input[1]').send_keys('tnrud3080')
driver.find_element_by_xpath('//*[@id="body"]/div/div[2]/div/div[2]/fieldset/input[2]').send_keys('tnrud3080')
driver.find_element_by_xpath('//*[@id="body"]/div/div[2]/div/div[2]/fieldset/button[1]').click()

time.sleep(2)
driver.get('https://ggl-maxim.com/api/popup/popup_menu.asp?mobile=0&lobby=EVOLUTION')
wait = WebDriverWait(driver, 20)
wait.until(EC.frame_to_be_available_and_switch_to_it("gameIframe"))
driver.find_element_by_class_name(".wrapper--1zUtU").click()
wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, ".svg--1nrnH")))

对于登录操作,请使用以下 xpath。这样你的代码看起来会很整洁。

driver.get('https://ggl-maxim.com/')

driver.find_element_by_xpath("//input[@placeholder='아이디']").send_keys('tnrud3080')
driver.find_element_by_xpath("//input[@placeholder='비밀번호']").send_keys('tnrud3080')
driver.find_element_by_xpath("//button[@class='btn_apply']").click()

点击 바카라 멀티플레이 按钮,尝试使用下面的 xpath 看看是否有效:

driver.find_element_by_xpath("//div[@class='wrapper--1zUtU']").click()

.svg--1nrnH 不代表您要单击的按钮。 另外,这是一个 svg 元素,您不能仅使用 css 选择器来定位该元素。

代码:

driver = webdriver.Chrome("C:\Users\***\**\Desktop\Selenium+Python\chromedriver.exe")
driver.maximize_window()
wait = WebDriverWait(driver, 30)
driver.get('https://ggl-maxim.com/')

driver.find_element_by_xpath('//*[@id="body"]/div/div[2]/div/div[2]/fieldset/input[1]').send_keys('tnrud3080')
driver.find_element_by_xpath('//*[@id="body"]/div/div[2]/div/div[2]/fieldset/input[2]').send_keys('tnrud3080')
driver.find_element_by_xpath('//*[@id="body"]/div/div[2]/div/div[2]/fieldset/button[1]').click()
sleep(5)
driver.get('https://ggl-maxim.com/api/popup/popup_menu.asp?mobile=0&lobby=EVOLUTION')
wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID,"gameIframe")))
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".wrapper--1zUtU")))
sleep(5)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".wrapper--1zUtU button"))).click()
sleep(5)
print("Operation successful")

O/P :

单击该按钮以获取游戏列表后,您需要切换到另一个 iframe。有两个 iframe 的名称非常相似,所以我使用了选择器来指示 iframe 名称以 https://evo.kplaycasino.com/frontend/evo/r2/#category"].

开头
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common import exceptions
import sys
import asyncio

"""
    Chromedriver Options / Driver setting
"""
options = webdriver.ChromeOptions()
#ptions.add_argument('headless')
options.add_argument('window-size=1920,1080')
options.add_argument("disable-gpu")

driver = webdriver.Chrome(executable_path='/snap/bin/chromium.chromedriver', chrome_options=options)

driver.get('https://ggl-maxim.com/')

driver.find_element_by_xpath("//input[@type='text']").send_keys('tnrud3080')
driver.find_element_by_xpath("//input[@type='password']").send_keys('tnrud3080')
driver.find_element_by_css_selector('.btn_apply').click()

time.sleep(2)
driver.get('https://ggl-maxim.com/api/popup/popup_menu.asp?mobile=0&lobby=EVOLUTION')
wait = WebDriverWait(driver, 20)
wait.until(EC.frame_to_be_available_and_switch_to_it("gameIframe"))
wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, ".svg--1nrnH")))
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".wrapper--1zUtU button>span")))
driver.find_element_by_css_selector(".wrapper--1zUtU button").click()
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'iframe[src^="https://evo.kplaycasino.com/frontend/evo/r2/#category"]')))
iframe2 = driver.find_element_by_css_selector('iframe[src^="https://evo.kplaycasino.com/frontend/evo/r2/#category"]')
driver.switch_to.frame(iframe2)
wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, ".svg--1nrnH")))