Selenium点击了一个按钮,但是什么也没有发生.该按钮将在使用非硒chrome浏览器时工作 &g



长期读者,第一次海报。

使用Selenium和python,我正在尝试创建一个程序,将我公司的新员工上传到Grainger.com的在线数据库。这个数据库将允许我们的员工每年购买新靴子来替换他们前一年收到的旧靴子。

我遇到的问题是在登录页面上。我有一些使用Selenium的经验,以前没有遇到过这个问题。当手动执行此过程时,它工作得很好。我编写的Selenium脚本将输入我的用户名和密码,并将找到并单击"Sign inquot;按钮(它不会引发异常),但"Sign inquot;"按钮/功能,它应该登录我,是死或没有功能。即使在尝试点击"Sign inquot;按钮,该按钮将无法工作。

下面是我编写的用于处理脚本登录过程的函数。

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
chrome_driver_path = r"C:UserscyendesOneDrive - Environmental WorksWork ProgramsSelenium Projectchromedriver.exe"
options = webdriver.ChromeOptions()
options.add_argument("--start-maximized")
driver = webdriver.Chrome(executable_path = chrome_driver_path, chrome_options= options)
grainger_login_page = "https://www.grainger.com/myaccount/signin"
def nav_thru_grainger_login_page(webpage):
"""This function will take us to grainger where we can start putting in new hire information"""
driver.get(webpage)
time.sleep(2)
#Sending the username
driver.find_element(By.XPATH, "//*[@id='signin_username']  ").send_keys('johnnydeeny420@gmail.com')
time.sleep(1)
#Sending the password
driver.find_element(By.XPATH, "//*[@id='signin_password']").send_keys('JohnnyDeeny420!')
time.sleep(1)  
#This is where the button should be clicked      
button = driver.find_element(By.XPATH, "//*[@id='sign-in-form']/button")
ActionChains(driver).move_to_element(button).click().perform() 
time.sleep(2)
driver.find_element(By.CSS_SELECTOR, "input[class='btn btnPrimary']").click()

nav_thru_grainger_login_page(grainger_login_page)

这个问题的奇怪之处在于,如果我把用户和密码发送到各自输入的功能部分拿掉,按钮会被点击,网站会告诉我需要输入用户名和密码信息才能继续。但是当按写的方式运行该功能时,点击按钮将不起作用。

我还尝试了传统的click()方法、submit()方法、execute_script方法、send_keys "RETURN"/"ENTER"和ActionChains方法(见代码)。所有这些方法都会点击"Sign In"按钮,没有填写用户名和密码输入,但当用户名/密码输入已填写信息时,将不会导致按钮起作用。

我从grainger.com/myaccount/signin工作的HTML代码在这里:Grainger HTML

任何帮助都是感激的,谢谢。

我能够使它工作使用这个SeleniumBase脚本:

先运行pip install seleniumbase,然后运行python:

from seleniumbase import SB
with SB(uc=True, slow=True, incognito=True) as sb:
sb.open("https://www.grainger.com/myaccount/signin")
sb.type("input#signin_username", "johnnydeeny420@gmail.com")
sb.type("input#signin_password", "JohnnyDeeny420!")
sb.click('button[data-test="signin-submit-button"]')
sb.sleep(1)
sb.type('input[name="searchQuery"]', "headlampn")
sb.sleep(1)
sb.assert_element('h2[data-testid="category-tabs-title"]')
sb.assert_text('Showing results for "headlamp"')
sb.click('a[title="Safety-Rated Headlamps"]')
sb.assert_element('img[alt="Safety-Rated Headlamps image"]')
sb.sleep(5)

相关内容

  • 没有找到相关文章

最新更新