私はセレンを学んでいるので、ここに私のコードがあります(私はこれを何時間も見つけました。私の最初の質問ですので、私の質問に答えてください)。それはChromeブラウザを起動し、www.google.hrに行く。searchbarのsthを押す。enterを押す。次に、WebPageObjectにオーガニック検索結果と広告検索結果を保存し、次のページボタンをクリックしてプロセスを繰り返す。このコードは、driver = new ChromeDriver()をインスタンス化すると動作します。この場合はドライバ=新しいChromeDriver(オプション);では使用できません。コンストラクタのオプションを使用すると、最初の検索結果ページに移動し、同じページを3回保存します。デバッグモードでは、私は見て、WPOには正しいURLとすべてを持つIWebElement NextPageButtonがあります。ChromeOptionsの読み込み時にSelenium Click()が機能しない
public static IWebDriver driver;
List<WebPageObject> WPOList = new List<WebPageObject>();
private void Form1_Load(object sender, EventArgs e)
{
ChromeOptions options = new ChromeOptions();
options.AddArguments("user-data-dir=C:/Users/Smirglpapir/AppData/Local/Google/Chrome/User Data");
options.AddArguments("--start-maximized");
driver = new ChromeDriver(options);
driver.Navigate().GoToUrl("http://www.google.hr");
IWebElement seacrhBarElement = driver.FindElement(By.Name("q"));
seacrhBarElement.SendKeys("What is the purpouse of life");
seacrhBarElement.SendKeys(OpenQA.Selenium.Keys.Enter);
for (int i = 0; i < 3; i++)
{
Thread.Sleep(4000); // this fixes million errors
WebPageObject WPO = new WebPageObject(); // Saves
WPOList.Add(WPO);
Thread.Sleep(500);
WPO.nextButton.Last().Click(); // last because it clicks the previous button .
}
class WebPageObject
{
public string URL { get; set; }
public List<IWebElement> nextButton { get; set; }
public List<string> organicSearchResults { get; set; }
public List<string> stText { get; set; }
private List<IWebElement> organicSRElementList = new List<IWebElement>();
public WebPageObject()
{
//gets the next button
nextButton = Form1.driver.FindElements(By.Id("pnnext")).ToList();
// saves the href
URL = nextButton.Last().GetAttribute("href");
// saves the IWebelements of organic seacrh results
organicSRElementList = Form1.driver.FindElements(By.ClassName("rc")).ToList();
// stores searchresults in organicSearchResults property (List<string>)
SaveSearchResults();
}
private void SaveSearchResults()
{
stText = new List<string>();
organicSearchResults = new List<string>();
foreach (IWebElement IwebEl in organicSRElementList)
{
organicSearchResults.Add(IwebEl.Text);
stText.Add(IwebEl.FindElement(By.ClassName("st")).Text);
}
}
}
}
多分、私はこの質問を複雑にしましたが、このコードもうまくいきません。
private void Form1_Load(object sender, EventArgs e)
{
ChromeOptions options = new ChromeOptions();
options.AddArguments("--user-data-dir=C:\\Users\\Smirglpapir\\AppData\\Local\\Google\\Chrome\\User Data");
IWebDriver driver = new ChromeDriver(options);
driver.Navigate().GoToUrl("http://www.google.hr");
IWebElement seacrhBarElement = driver.FindElement(By.Name("q"));
seacrhBarElement.SendKeys("What is the purpouse of life");
seacrhBarElement.SendKeys(OpenQA.Selenium.Keys.Enter);
Thread.Sleep(4000);
var nextButton = driver.FindElements(By.Id("pnnext"));
nextButton.Last().Click();
Thread.Sleep(4000);
nextButton = driver.FindElements(By.Id("pnnext"));
Thread.Sleep(4000);
nextButton.Last().Click();
}
それは私が解決策見つけ
ここでは、 'WebPageObject'のコードが役に立ちます。 – sokkyoku
ありがとう、申し訳ありませんが、初心者です – Jones