.net phantomjs + selenium无法获取元素

时间:2013-12-24 13:03:00

标签: c# .net selenium phantomjs

当我单独使用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")); 但是当我单独使用selenium和实际的浏览器时,一切正常。但我想让事情变得无头。

我是phantomJS的新手,如果我正确实施并且我的代码是正确的,请更正我。

1 个答案:

答案 0 :(得分:1)

在某些情况下,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表达式