我正在测试一个网站,以了解如何在C#中使用硒。我无法找到登录表单元素,因为表单输入元素没有任何标识符,而且xpath在我的代码中不起作用。
我包括了一张inspect元素代码的照片,我在检查相关的登录表单元素时看到了该代码。我的代码如下。
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
namespace SeleniumTest
{
[TestClass]
public class UnitTest1
{
static void Main(string[] args)
{
IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl("http://www.website.com");
driver.FindElement(By.LinkText("Login")).Click();
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
driver.FindElement(By.XPath("//div[@id='divLogin']/div[1]/div[1]/div/input")).SendKeys("Username");
driver.FindElement(By.XPath("Password")).SendKeys("Password");
driver.FindElement(By.LinkText("Login")).Click();
}
}
}
当然,我为密码包含的xpath是一个占位符,但它应该看起来与用户名相似。
在使用chrome的copy复制xpath时
我已经找了几个小时的答案,但什么都找不到。
提前谢谢你的帮助。
在这里,您可以相对于用户名标签为输入框编写xpath。这将是鲁棒和稳定的xpath。在输入值之前,请确保此输入框已加载到网页中。您可以尝试在输入值之前放置一些等待。
//label[contains(text(),'Username')]/following::input
您需要改进元素定位器,并在与它们交互之前使用wait-for-element。下面的代码可以输入用户名和密码,然后单击登录按钮。
String url = "http://www.website.com";
driver.Navigate().GoToUrl(url);
driver.Manage().Window.Maximize();
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementToBeClickable(By.ClassName("login"))).Click();
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.Id("username"))).SendKeys("your username");
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.Id("password"))).SendKeys("your password");
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementToBeClickable(By.Id("signin-submit2"))).Click();
Thread.Sleep(4000);-> This is for viewing the page before quitting
driver.Quit();
进口:
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;
如何使用显式等待:
转到“NuGet package manager
”并安装DotNetSeleniumExtras。侍者助手
,然后您就可以使用显式等待。
输出:
我正在删除一个网络应用程序,我需要找到一个特定的元素,但我不能用我的xpath找到它。这是我试图找到元素的HTML代码 我成功地找到了它,但是当我注意到id是自动生成的时,我陷入了困境。我试图解决这个问题,找到包含文字“名字”的标签,然后找到兄弟姐妹,但什么都没有。这是我的xpath:
我需要在HTML中找到此元素 我就是这样做的 使用XPATH,由Chrome控制台生成: 使用XPATH,它正在寻找某种正则表达式: 最后使用XPATH,它通过页面精确到我的元素 他们都没有工作。All给出了一个例外 硒。常见的例外情况。InvalidSelectorException:Message:u'由于以下错误,给定的选择器无法找到具有xpath表达式的元素:\n语法错误:表达式不是合法表
我试着在网页上找到重构元素(时间-分钟)。我的代码只适用于前面的简单文本。现在我使用Ctrl Shift I并指出我的元素和“复制Xpath”。 此外,我还有一个Chrome扩展名“XPath helper”,并试图用它来实现这一点。XPath比我下面的代码要长。而且它也不起作用。 错误:NoSuchElementException:消息:没有这样的元素:无法定位元素:{“方法”:“xpath”,
我注意到,在selenium webdriver中查找xpath元素的函数text()在这种情况下不起作用: 如您所见,文本“Selecionar”位于按钮标记内,但在文本后还有其他标记,在本例中,当我尝试使用此模式通过xpath查找元素时://*[text()='Selecionar']未找到任何元素。 你们都知道在这种情况下,假设使用元素按钮的文本(因为在其他情况下,它将是唯一的选项),如何查
任何提示都会很有帮助!
大家好,我正试图在网站中找到一个元素,但出于某种原因,它不允许我。该网页是Reddit的登录形式,我尝试输入用户名和密码,但当我列出所有输入时,它只出现在顶部搜索栏中。我想这是因为它就像在另一个“标签”一样,它会弹出到前面,但我不知道如何管理它。提前谢谢。