簡體   English   中英

無法在 C# 中找到帶有 Selenium 的“按鈕”

[英]Unable to find “Button” with Selenium in C#

我在使用 Selenium 代碼時遇到了一個問題,無法找到一個只有"Value""type"的按鈕,經過檢查,它看起來像這樣:

<input type="sumbit" value="login" />

檢查圖像

我試了兩次,但兩條線都不適合我。

線路:

第一個解決方案:

driver.FindElement(By.XPath("//button[contains(text(),'Login')]")).Click();

第二種解決方案:

driver.FindElement(By.ClassName("submit")).Click();

帶有錯誤消息的圖像(第二行錯誤)

任何人都可以幫助我,或者至少指出我缺少什么,因為為這種常見的事情找到解決方案變得非常令人沮喪,我在教程頁面上練習過,按鈕從來沒有問題。

請。 (對不起我的英語不好)

Ps:我查了“類似的問題,我還沒有找到解決方案。

Pss:伙計們,還有另一種我還沒有嘗試過,但我有 3 行不同的代碼,你認為其中一種會起作用嗎:

有下拉列表,我想選擇列表中的最后一件事......

driver.FindElement(By.XPath("///*[contains(., '處理數據>>')]"));

driver.FindElement(By.Id("pdatasub")).Click();

driver.FindElement(By.XPath("//div[text()='Process Data >>']")).Click();

檢查下拉列表

打開下拉列表中最后一個“按鈕”的代碼:

driver.FindElement(By.XPath("//div[text()='Final Values']")).Click();

在此處輸入鏈接描述

謝謝你們的幫助!

您的定位器有誤。
你可以使用這個:

driver.FindElement(By.XPath("//button[@type='submit']")).Click();

要么

driver.FindElement(By.XPath("//button[@value='login']")).Click();

要么

driver.FindElement(By.XPath("//button[@value='login' and @type='submit']")).Click();

CSS Selector 也可以類似地使用。
還有幾個可能的問題:

  1. 您應該在訪問該元素之前添加一個等待。 否則,您正在嘗試在頁面尚未加載時查找元素。 預期條件是執行此操作的首選方式。
  2. 元素可以在 iframe 內。 如果是這樣,您必須切換到該 iframe 才能訪問其中的元素。

您使用了錯誤的定位器:

試試這個:

driver.FindElement(By.XPath("//input[@type='submit' and @value='Login']")).Click();

要么

使用ExplicitWaits

new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//input[@type='submit' and @value='Login']"))).Click();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM