使用web驱动程序在Seleniumpython中选择按钮



有人能告诉我如何使用Selenium网络驱动程序正确点击按钮吗?

我有以下html元素,我想点击:

<button type="button" class="btn button_primary" data-bind="click: $parent.handleSsoLogin.bind($parent)"> Sign In
</button>

我正在尝试将WebDriver与python一起使用,但它找不到元素。请告知如何解决?

from xml.dom.expatbuilder import InternalSubsetExtractor
from selenium.webdriver.common.by import By
import time
# imports parts of interest
from selenium import webdriver
# controlling the chrome browser
driver = webdriver.Chrome()
link=xxxxx

driver.get(link2)
# login = driver.find_element(By.LINK_TEXT,"Login")
time.sleep(10)
# login.click()
driver.find_element(By.ID,'CybotCookiebotDialogBodyLevelButtonLevelOptinAllowAll')
time.sleep(10)
login=driver.find_element(By.CSS_SELECTOR("<button type="buttonclass="btn button_primary" data-bind="click: $parent.handleSsoLogin.bind($parent)"> Sign In

到目前为止,尝试了不同的元素,但没有找到

这里有一个完整的例子,说明如何在terex部分转到登录页面并登录(我不知道为什么要编辑掉url(。

假设您有一个工作的Selenium设置,您还需要以下导入:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time as t
[...]
wait = WebDriverWait(driver, 5)
url = 'https://parts.terex.com/'
driver.get(url)
t.sleep(3)
try:
wait.until(EC.element_to_be_clickable((By.ID, "CybotCookiebotDialogBodyLevelButtonLevelOptinAllowAll"))).click()
print('accepted cookies')
except Exception as e:
print('no cookie button!')
t.sleep(4)
login_button = wait.until(EC.element_to_be_clickable((By.XPATH, '//button[@data-bind="click: $parent.handleSsoLogin.bind($parent)"]')))
login_button.click()
print('clicked login button')
t.sleep(5)
wait.until(EC.frame_to_be_available_and_switch_to_it((By.XPATH, '//iframe[@class="truste_popframe"]')))
try:
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a[class='call']"))).click()
print('accepted cookies again')
except Exception as e:
print('no cookie iframe and button!')
driver.switch_to.default_content()
user_email_field = wait.until(EC.element_to_be_clickable((By.XPATH, '//input[@id="idcs-signin-basic-signin-form-username"]')))
user_email_field.send_keys('parts_dealer_112')
password_field = wait.until(EC.element_to_be_clickable((By.XPATH, '//input[@placeholder="Password"]')))
password_field.send_keys('password112')
login_button = wait.until(EC.element_to_be_clickable((By.XPATH, '//oj-button[@id="idcs-signin-basic-signin-form-submit"]')))
login_button.click()
print('logged in unsuccessfully')

Selenium文档可以在这里找到:https://www.selenium.dev/documentation/

我已经使用Chrome插件选择器集线器找到了元素Selectors Hub Google Chrome。它可以快速选择元素的Xpath,然后可以与Xpath定位器一起使用-让生活变得更轻松-强烈建议您在遇到困难时尝试一下。

login=driver.find_element(By.XPATH,"//button[@data-bind='click: $parent.handleSsoLogin.bind($parent)']").click()

最新更新