当前位置: 首页 > 知识库问答 >
问题:

使用Selenium单击按钮的正确方法

施自明
2023-03-14

我以前也问过类似的问题,但在解析网页时仍然会遇到错误。场景是系统导航到https://shop.sprouts.com/shop/flyer并希望提取与每个类别相关的每个特价商品。目前,当一个类别被点击时,我会在右边看到一个空白屏幕。我尝试了以下两种方法,但得到了相同的结果。

elementLeftHandSideMenu.Click();
iJavaScriptExecutor.ExecuteScript("arguments[0].click();", elementLeftHandSideMenu);

这是时间问题吗?我做错了什么?

using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;
using System;
using System.IO;
using System.Linq;
using System.Reflection;
using SeleniumExtras.WaitHelpers;
using System.Threading;
using System.Collections.Generic;
using Newtonsoft.Json;

[TestClass]
public class UnitTest1
{
ChromeDriver driver;
WebDriverWait webDriverWait;
[TestInitialize]
public void Startup()
{
  var chromeOptions = new ChromeOptions();
  chromeOptions.AddArguments("--proxy-server='direct://'");
  chromeOptions.AddArguments("--proxy-bypass-list=*");
  chromeOptions.AddArguments("--start-maximized");

  var path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
  ChromeDriverService chromeDriverService = ChromeDriverService.CreateDefaultService(path);
  driver = new ChromeDriver(chromeDriverService, chromeOptions);
  webDriverWait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
}
[TestCleanup]
public void CleanUp()
{
  driver.Quit();
}
[TestMethod]
public void GetSproutsWeeklyAdDetails2()
{
  try
  {
    driver.Navigate().GoToUrl("https://shop.sprouts.com/shop/flyer");
  }
  catch (TimeoutException timeoutException)
  {
    driver.Navigate().Refresh();
  }
  var iJavaScriptExecutor = (IJavaScriptExecutor)driver;
  webDriverWait.Until(driver1 => iJavaScriptExecutor.ExecuteScript("return document.readyState").Equals("complete"));

  var elementsLeftHandSideMenu = webDriverWait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(
    By.XPath("//ul[@class='menu sidenav']/li[@class='child']/a")));
  System.Diagnostics.Debug.WriteLine(elementsLeftHandSideMenu.Count);
  var items = new List<Item>();
  foreach (var elementLeftHandSideMenu in elementsLeftHandSideMenu)
  {
    Thread.Sleep(2000);
    try
    {
      elementLeftHandSideMenu.Click();
      //iJavaScriptExecutor.ExecuteScript("arguments[0].click();", elementLeftHandSideMenu);
    }
    catch (Exception exception)
    {
      System.Diagnostics.Debug.WriteLine(exception.ToString());
    }
    //parsing code here does not work as the RHS shows a blank page
    System.Diagnostics.Debug.WriteLine("Exit");
  }
}
}

共有1个答案

丁慈
2023-03-14

您的元素点击似乎没有问题。您的网站似乎有问题。即使我手动单击,它也不会第一次加载。您可以尝试移动驱动程序。导航()。刷新();从catch到尝试自己,即刷新页面一旦打开或可能在第一次单击后。我相信它会起作用。

try
  {
    driver.Navigate().GoToUrl("https://shop.sprouts.com/shop/flyer");
    driver.Navigate().Refresh();
  }
  catch (TimeoutException timeoutException)
  {
    driver.Navigate().Refresh();
  }

如果上述代码不起作用,请尝试-

try
    {
      elementLeftHandSideMenu.Click();
      driver.Navigate().Refresh();
      //iJavaScriptExecutor.ExecuteScript("arguments[0].click();", elementLeftHandSideMenu);
    }
 类似资料:
  • 我正在尝试用selenium WebDriver单击一个按钮。但无法识别按钮。这是我的代码:它返回一条错误消息 NoSuchelementException:消息:u'没有这样的元素:找不到元素:{“method”:“XPath”,“Selector”:“//*[@id=”ArtifactContentList“]/div[2]/div/div[3]/content-dataset-actions

  • 我想单击以下按钮: https://i.stack.imgur.com/ifiDC.png 到目前为止,我的代码看起来像这样,但什么也没发生: https://i.stack.imgur.com/Cgi5v.png 谢谢你的帮助:)

  • 我正在尝试在Selenium中测试图像按钮点击。 图像是事件,当我点击sgt消息出现我 超文本标记语言代码:

  • 问题内容: 我是python selenium的新手,我尝试单击具有以下html结构的按钮: 我希望能够同时单击上方的和按钮(显然是单独单击)。 我尝试了几件事,例如: 要么, 要么, 但是,我似乎总是以结尾,例如: 我想知道是否可以以某种方式使用HTML的onclick属性来进行selenium单击? 任何能将我指向正确方向的想法都很棒。谢谢。 问题答案: 对于python,请使用 和

  • 我试图让Selenium点击一个按钮来跟踪一个链接(它是表下面的“上个月”按钮):https://www.interactivebrokers.eu/en/index.php?f=39108 我尝试了以下方法 有人能帮忙吗?谢谢

  • 我是python selenium的新手,我正在尝试单击一个具有以下html结构的按钮: 我希望能够同时单击上面的和按钮(显然是单独单击)。 我尝试了几件事,例如: 或者, 或者,