【问题标题】:Not able to click button(WebElement) in Selenium Webdriver 3.7无法在 Selenium Webdriver 3.7 中单击按钮(WebElement)
【发布时间】:2019-02-04 00:47:52
【问题描述】:

我试图在以下网站中自动添加到购物车功能,但“添加到购物车”按钮没有被点击,尽管元素被识别并且代码已经被写入使用 Actions 类和 Javascriptexecutor 来点击按钮。

网站:https://redmart.com/sales 按钮:加入购物车

硒代码:

WebElement element4 =   
driver.findElement(By.xpath("//article[@id='contentSection']   //div[@class='productShelf']//ul/li[1]"));
WebElement element5 = element4.findElement(By.xpath("div[3]/div/a/span"));

actions = new Actions(driver);
actions.moveToElement(element4).moveToElement(element5);
Thread.sleep(3000);

actions.click();
actions.build().perform();

有人可以建议一个解决方案,该解决方案将单击“添加到购物车”按钮并且添加的元素也应显示在购物车中吗?

【问题讨论】:

  • 你能数一下物品并告诉我物品的数量
  • Add To Cart 按钮适用于哪个产品
  • @Rajagopalan。假设我想从显示的列表中添加第一项。

标签: selenium


【解决方案1】:

您的 xpath 不正确,因为它没有选择按钮。
试试这个 xpath "//li[@data-id='88800134']/div[3]/div/a",如果这能解决问题,请告诉我。

driver.findElement(By.xpath("//li[@data-id='88800134']/div[3]/div/a")).click();

后期编辑:

WebDriver driver = new ChromeDriver();
    driver.get("https://redmart.com/sales ");
    driver.manage().timeouts().implicitlyWait(5,TimeUnit.SECONDS);

    WebElement element =driver.findElement(By.xpath("//li[@data-id='88800134']/div[3]/div/a"));

    JavascriptExecutor js = (JavascriptExecutor)driver;
    js.executeScript("arguments[0].click();", element);

【讨论】:

  • 尝试运行而不是上面的代码只有这一行:driver.findElement(By.xpath("//li[@data-id='88800134']/div[3]/div/a")).click(); 它肯定会工作
  • @Arun 你是对的。经过一番研究,我终于找到了解决方案。请参阅稍后编辑我的答案。
  • 很高兴能帮上忙
【解决方案2】:

我真的认为你选择了错误的元素:

browser.find_element_by_xpath(".//*[@id='contentSection']/div/article/div[2]/div/div/ul/li[1]/div[3]/div/a").click()
browser.find_element_by_xpath(".//*[@id='contentSection']/div/article/div[2]/div/div/ul/li[2]/div[3]/div/a").click()
browser.find_element_by_xpath(".//*[@id='contentSection']/div/article/div[2]/div/div/ul/li[3]/div[3]/div/a").click()
browser.find_element_by_xpath(".//*[@id='contentSection']/div/article/div[2]/div/div/ul/li[4]/div[3]/div/a").click()

无论如何,请查看我在这篇文章中的回答,以确保您获得正确的信息;) python selenium click on button

【讨论】:

  • 感谢您的解决方案。以上对你有用吗?我的意思是它是否单击了第一个项目的添加到购物车并显示在购物车中?
  • 我尝试不是因为我在这台电脑上没有硒,它不起作用,因为它说前面有一个元素;我想这个 UI 是用 Angular JS 或类似的方式完成的,这意味着所有对象都在同一页面上但隐藏和重叠,这会给 selenium 带来很多问题(我不能只是确保,因为我不确定在哪个语言是 UI)
【解决方案3】:

请试试这个 xpath:

//ul[contains(@class,'productList')][1]//li[1]//a[contains(@class,'Button')]

它是列表上的第一个,,添加到购物车''按钮。 如果要单击其他产品,只需更改产品列表的索引或 xpath 中的 li 标签。 也请尝试在不使用操作的情况下点击。

driver.findElement(By.xpath("//ul[contains(@class,'productList')][1]//li[1]//a[contains(@class,'Button')]").click();

这可能是操作问题。

希望对你有帮助!

【讨论】:

    【解决方案4】:

    尝试使用以下 xpath:

    //ul[contains(@class,'productList')][1]//li[1]//a[contains(@class,'Button')]/span

    这是第一项。 (//span[text()='加入购物车'])[1]

    【讨论】:

      【解决方案5】:

      尝试将您的 WebElement element5 更改为以下代码:

      WebElement element5 = element4.findElement(By.xpath("/div[3]/div/a/span/parent::node()")); 因为您似乎正在尝试单击 span 元素,这就是它没有做任何事情的原因

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-02
        • 1970-01-01
        • 2016-11-26
        • 1970-01-01
        • 2014-01-04
        • 1970-01-01
        • 1970-01-01
        • 2017-01-17
        相关资源
        最近更新 更多