在c#中使用Selenium登录Instagram

本文关键字:Selenium 登录 Instagram | 更新日期: 2023-09-27 17:54:44

我正在尝试使用c#和Selenium登录Instagram,但该网站没有按钮的ID。不然我还能怎么做?我尝试过使用XPath,但对它了解不多。下面是我到目前为止的代码示例。

IWebDriver fox = new FirefoxDriver();
fox.Navigate().GoToUrl("http://www.instagram.com");
IWebElement email = fox.FindElement(By.XPath("//i[contains(@class, '_k6cv7')]"));

在c#中使用Selenium登录Instagram

您要做的是找到您想要的元素的独特之处,并使用它来定位它。id通常是理想的,但是,正如您所看到的,我们可能想要查找的许多元素没有id,因此我们必须依赖元素的其他属性。您可以像以前一样查找类、名称或任何其他属性。我通常使用CSS选择器来查找元素。我会给你几个例子,然后在底部放几个链接,你可以回顾和参考。

Email INPUT

<input type="text" class="_kp5f7 _qy55y" aria-describedby="" aria-label="Email"
  aria-required="true" autocapitalize="off" autocorrect="off" name="email"
  placeholder="Email">
由类

// INPUT with class (indicated by .) _kp5f7
driver.FindElement(By.CssSelector("input._kp5f7"));

你可以用By.ClassName(),但它会给你任何元素类型,INPUT, P,等等。有了这个,你可以完成同样的事情,但更具体。一般来说,你想要尽可能具体。这样做可以最大限度地减少你的定位器与未来网站的变化。

由属性

// INPUT with attribute 'name' equal to 'email'
driver.FindElement(By.CssSelector("input[name='email']"));

属性搜索的一般形式是TAG[ATTRIBUTE_NAME='ATTRIBUTE_VALUE']。你可以做更多的事情,但这是一个非常常见的CSS选择器。

CSS选择器参考

CSS选择器提示

按钮上的类是生成的,所以您不会使用类找到它们。

你应该做的是看看你能找到的东西,比如"aria-label"是"用户名"(类似于密码),按钮上的文本是"登录"。

您也可以使用chrome找到xpath (debug ->右键单击element -> copy -> xpath)。login字段会给出类似

这样的内容
 //*[@id="react-root"]/section/main/article/div[2]/div[1]/div/form/div[1]/input

试试这个:

IWebDriver fox = new FirefoxDriver();
fox.Navigate().GoToUrl("http://www.instagram.com");
IWebElement email = fox.FindElement(By.CssSelector("input[name='username']"));
email.Sendkeys('Kam@gmail.com');