c# - 即使没有错误,也无法使用 Selenium Webdriver 注册零售网站
问题描述
尝试使用 C# 通过 Selenium 注册 Nordstrom 站点。代码正确执行,但由于某种原因没有发生注册。注册后,右上角的 Nordstrom 网站应该显示帐户而不是登录/注册。无论如何都没有错误,但它只是没有注册。单击“创建帐户”按钮的方式有问题吗?
这是代码
using NordstromRack.UI_Elements;
using OpenQA.Selenium;
using OpenQA.Selenium.Interactions;
using OpenQA.Selenium.Support.UI;
using System;
using System.Threading;
namespace NordstromRack
{
class EntryPoint
{
static void Main(string[] args)
{
String parentHandle = Driver.driver.CurrentWindowHandle; // get the current window handle
EmailSignUp signup = new EmailSignUp();
Driver.driver.Navigate().GoToUrl("https://www.nordstromrack.com/");
Driver.driver.Manage().Window.Maximize();
Thread.Sleep(1000);
signup.SignUpLink.Click();
foreach (String winHandle in Driver.driver.WindowHandles)
{
Driver.driver.SwitchTo().Window(winHandle);
}
//WebDriverWait wait = new WebDriverWait(Driver.driver, TimeSpan.FromSeconds(1000));
//wait.Until(ExpectedConditions.ElementToBeClickable(signup.EmailInput));
signup.EmailInput.Click();
signup.EmailInput.SendKeys(Config.Credentials.Valid.BaseEmail);
Thread.Sleep(1000);
signup.Password.Click();
signup.Password.SendKeys(Config.Credentials.Valid.Password);
Thread.Sleep(1000);
Actions action = new Actions(Driver.driver);
action.MoveToElement(signup.CreateAccount).Click().Perform();
Console.WriteLine("Signup Successful");
Thread.Sleep(5000);
//Driver.driver.Quit();
}
}
}
这是用于识别元素的类
using OpenQA.Selenium;
using OpenQA.Selenium.Support.PageObjects;
namespace NordstromRack.UI_Elements
{
public class EmailSignUp
{
public EmailSignUp()
{
PageFactory.InitElements(Driver.driver, this);
}
[FindsBy(How = How.CssSelector, Using = "input.form-label__input.form-label__input--password")]
public IWebElement Password { get; set; }
[FindsBy(How = How.CssSelector, Using = "input.form-label__input.form-label__input--email")]
public IWebElement EmailInput { get; set; }
[FindsBy(How = How.ClassName, Using = "secondary-nav__link")]
public IWebElement SignUpLink { get; set; }
[FindsBy(How = How.CssSelector, Using = "button.cta-button.cta-button--nordstromrack")]
public IWebElement CreateAccount { get; set; }
}
}
这是驱动程序类
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
namespace NordstromRack
{
public static class Driver
{
public static IWebDriver driver = new ChromeDriver();
}
}
解决方案
而不是这一切
signup.Password.SendKeys(Config.Credentials.Valid.Password);
Thread.Sleep(1000);
Actions action = new Actions(Driver.driver);
action.MoveToElement(signup.CreateAccount).Click().Perform()
试试这个。不需要点击“创建帐户”按钮。
signup.Password.SendKeys(Config.Credentials.Valid.Password);
signup.Password.Submit();
推荐阅读
- r - 在组内随机抽样一个组
- dagger-2 - 我如何在匕首 2 中注入 viewmodelScope
- python - 关系“django_migrations”已经存在
- spring-boot - Spring Boot webflux 返回 HTML 内容
- javascript - 来自 Axios 的响应数据将我的 JSON 转换为 Object 对象
- windows - vs代码git错误:Git:/usr/bin/bash:init:没有这样的文件或目录
- excel - 使用 PasteSpecial 剪切/粘贴
- java - 如何将 SharedPreferences 数据从 settingActivity 传递到 MainAdapter?
- javascript - 如何根据 API 结果值更改 HTML 背景?
- python-3.x - 使用 bs4 遇到 Webscraping 问题