当我单独使用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表达式替换它