使用c#设置html选择选项

时间:2013-02-23 03:23:52

标签: c# html html-agility-pack

好的,所以这似乎很容易,但我找不到怎么做。我使用htmlagility包来解析网页,效果很好。现在,问题是以下几点。

<td width="45%" class="TextBold" nowrap>
<select name="ctl00$BodyContent$ddlChooseView" onchange="if (this.selectedIndex > 0
{pageTracker._trackEvent('webpage tracker','complete report',this.options
[this.selectedIndex].text);}
ShowProcessing(this);setTimeout('__doPostBack(\'ctl00$BodyContent$ddlChooseView\',\'\')', 
    0)" id="ctl00_BodyContent_ddlChooseView" class="TextBold">
        <option selected="selected" value=""> -- Select a view -- </option>
        <option value="H">Option1</option>
        <option value="R">Option2</option>
        <option value="N">Option3</option>
        <option value="NA">Option4</option>
        <option value="RN">Option5</option>
        <option value="QP">Option6</option>

</select>
</td>

如果格式不正确,我道歉。我想选择html选择对象中的一个选项。触发页面上的新显示,然后解析该“新”网页。 htmlagilitypack可以这样做吗?如果没有,我该怎么做才能选择其中一个选项?

3 个答案:

答案 0 :(得分:0)

我认为你对HtmlAgilityPack可以做的事情有点困惑......

HtmlAgilityPack - 只是一个普通人。

browser's point of view,选择其中一个选项会导致浏览器向页面发送POST类型请求。

您现在可以做的是,使用POSTWebClient模拟HttpWebRequest请求,然后您将获得可以在新网页上工作的new web page使用HtmlAgilityPack

答案 1 :(得分:0)

这可以通过使用selenium webdriver轻松完成。 阅读它,有利于处理这类东西。

这里我首先选择使用Webdriver库获取选项的元素
     var selectElem = driver.FindElement(By.Id("ctl00_BodyContent_ddlChooseView"));

现在使用WebDriver.Support.UI库我得到了所有选项
    SelectElement selectOption = new SelectElement(selectElem);

现在你可以对元素执行任何操作。即
如同     selectOption.SelectByValue("here u give the value")
要么
selectOption.SelectByText("here u give the value")

还有更多......你发现了。

答案 2 :(得分:0)

此代码可能对您有用它包含基本详细信息。

<code>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

//Need to add these two libarary
//For that u need to have WebDriver.dll and WebDriver.Support.dll 
using OpenQA.Selenium;
using OpenQA.Selenium.Support.UI;

namespace Test
{
class Program
{
static void Main(string[] args)
{
//Intializing the webdriver. 
//Note i m using firefox driver, others can also be used.
IWebDriver driver = new OpenQA.Selenium.Firefox.FirefoxDriver();
//Navigating to the given page.
driver.Navigate().GoToUrl("url of the page you want to get the option from");
//Finding the element. If element not present it throws exception so do remember to handle it.
var element = driver.FindElement(By.Id("ctl00_BodyContent_ddlChooseView"));
//No intializing the select element option.
SelectElement selectElem = new SelectElement(element);
selectElem.SelectByValue("H"); 
//or i can select option using text that is
selectElem.SelectByText("Option1"); 
}

}
}
</code>

抱歉缩进。