有人可以帮我看看我缺少的硒脚本无法按下按钮“ Einloggen be my my onvista”吗?
def open_browser():
chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_argument("--start-maximized")
prefs = {"profile.managed_default_content_settings.images": 2}
chromeOptions.add_experimental_option("prefs", prefs)
driver = webdriver.Chrome('chromedriver.exe',options=chromeOptions)
return (driver)
def check_exists_by_xpath(xpath):
try:
driver.find_element_by_xpath(xpath)
except NoSuchElementException:
return False
return True
driver = open_browser()
url = 'https://my.onvista.de/login'
driver.get(url)
check_exists_by_xpath("//*[text()='Einloggen bei my onvista']")
el = driver.find_element_by_xpath("//*[text()='Einloggen bei my onvista']")
driver.execute_script("arguments[0].click();", el)
将元素设置为另一个按钮时,效果很好:
el = driver.find_element_by_xpath("//*[text()='Zum onvista bank Webtrading ']")
答案 0 :(得分:0)
xpath //*[text()='Einloggen bei my onvista']
返回元素h1标头和您的按钮的列表,这是您单击按钮时遇到问题的原因。请参考下面的solutin解决问题。
此外,尝试在单击按钮时诱导WebDriverWait,这可能是同步问题,
wait = WebDriverWait(driver, 20)
wait.until(EC.element_to_be_clickable((By.XPATH, "//span[contains(text(),'Einloggen bei my onvista')]"))).click()
或
wait = WebDriverWait(driver, 20)
element=wait.until(EC.element_to_be_clickable((By.XPATH, "//span[contains(text(),'Einloggen bei my onvista')]")))
driver.execute_script("arguments[0].click();", element)
注意::请在您的解决方案中添加以下内容
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait