.net Phantomjs + Selenium 无法获取元素



当我单独使用Selenium时,一切都运行良好,但是当我尝试使用phantomjs时,我在查找元素时为空。

        static void Main()
    {
        IWebDriver driver = new PhantomJSDriver();
        driver.Navigate().GoToUrl("https://sellercentral.amazon.de/gp/homepage.html");
        var username = driver.FindElement(By.Id("username"));
        var password = driver.FindElement(By.Id("password"));
        username.SendKeys("*************************");
        password.SendKeys("*************");
        driver.FindElement(By.Id("sign-in-button")).Submit();
        string messagesURL = "https://sellercentral.amazon.de/gp/communication-manager/inbox.html/ref=ag_cmin__cmin?ie=UTF8&clcmResponseTimeSuboptions=&dateExactEnd=&dateExactStart=&dateFilter=&itemsPerPage=20&marketplaceId=A1PA6795UKMFR9&otherPartyId=&pageNum=1&refIndex=40&searchBoxText=&showFilters=0&sortBy=ArrivalDate&sortOrder=Descending";
        driver.Navigate().GoToUrl(messagesURL);
        ParseMessages(driver);
    }
    public static void ParseMessages(IWebDriver driver) {
        var node = driver.FindElements(By.ClassName("list-row-white"));
        foreach (var n in node) {
            var refNo = n.FindElement(By.ClassName("data-display-field-border-lbr"));
            Console.WriteLine(mi.refNo);
        }
    }

在这一行代码中,我得到 null:var node = driver.FindElements(By.ClassName("list-row-white"));但是当我在实际浏览器中单独使用硒时,一切都在工作。但我想让事情变得无头。

我是 phantomJS 的新手,如果我正确实现它并且我的代码是正确的,请纠正我。

在某些情况下,PhantomJS在使用与css相关的东西或元素类时会遇到问题。
在这种情况下,将定位器转换为 XPath 可能会解决问题。

// Thread.Sleep(3000) // Please, replace me with WebDriverWait ^_^ 
var node = driver.FindElements(By.XPath("//*[contains(@class,'list-row-white')]"));

另一点,PhantomJS的工作速度比任何其他浏览器都要快得多。
尝试在失败的代码行之前插入 Thread.Sleep。

如果代码会通过 - 请用正确的WebDriverWait表达式替换它

最新更新