无法定位

时间:2019-07-23 09:52:22

标签: c# selenium selenium-webdriver

此代码中有两个错误 第一次超时 第二个是找不到

我尝试了太多

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Firefox;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Selenium_Test_Webdriver {
    class Program {
        static void Main(string[] args) {

            IWebDriver Driver = new FirefoxDriver ();

            Driver.Url = "https://www.facebook.com/";
            Driver.Manage().Window.Maximize();
            //Driver.Manage().Timeouts().ImplicitWait(TimeSpan.FromSeconds(10));
            Driver.FindElement(By.Id("email")).SendKeys("");
            Driver.FindElement(By.Id("pass")).SendKeys("Password" + Keys.Enter);
            //Driver.FindElement(By.XPath("//a[@title='Arslan Khan Afridi']")).Click();
            Driver.FindElement(By.XPath("//span[@class='_1vp5 f_click']")).Click(); This shows that unable to locate path
            Driver.FindElement(By.XPath("")).Click();
        }
    }
}

无法找到。

1 个答案:

答案 0 :(得分:0)

这个print(func(1)) # ([1],) print(func(2)) # ([1, 2],) 类名似乎是动态的,即,每次您打开页面时它都会更改。

如果您的目标是登录Facebook,我建议您坚持使用_1vp5 f_click attribute,并仔细查看其名称,这是简化自动化测试的唯一标识符。

enter image description here

所以改变这个:

data-testid

对此:

Driver.FindElement(By.XPath("//span[@class='_1vp5 f_click']")).Click();

您还可以考虑使用WebDriverWait类,这样您将充满信心,即使Selenium无法立即使用,Selenium仍会寻找该元素,即,可以使用{{ 3}}个呼叫

因此将以下行添加到“使用”块中:

Driver.FindElement(By.XPath("//input[@data-testid='royal_login_button']")).Click();

以及要测试的以下几行:

using SeleniumExtras.WaitHelpers;

上述的WaitHelpers命名空间可通过AJAX包获得