当我单独使用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的新手,如果我正确实施并且我的代码是正确的,请更正我。
答案 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表达式