2

Webページのテストを自動化するためにSelenium2(Webdriver)を使用しています。しかし、webdriverフレームワークを使用してチェックボックスのリストからチェックボックスをチェックする方法があるのだろうか?

私はこのコードを試しましたが、役に立ちませんでした:

IWebElement box = ffDriver.FindElement(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_Adde_div']"));
List<IWebElement> chkbox = box.FindElements(By.TagName("input"));
ffDriver.FindElement(By.Id("ctl00_ContentPlaceHolder1_Add_lstCategory_0"));         
//chkbox.g(2).click();
4

8 に答える 8

5

チェックボックスのIDがすでにわかっている場合は、このメソッドを使用してクリックして選択できます。

string checkboxXPath = "//input[contains(@id, 'lstCategory_0')]"
IWebElement elementToClick = driver.FindElement(By.XPath(checkboxXPath));
elementToClick.Click();

ページに同様の ID を持つ複数のチェックボックスがあると仮定すると、「lstCategory_0」をより具体的なものに変更する必要がある場合があります。

これは C# で書かれていますが、他の言語に適応することは難しくありません。また、投稿を編集してさらに情報を追加していただければ、この例をさらに微調整できます。

これがうまくいくかどうか教えてください!


私はサイトにアクセスし、次のコードを使用してドロップダウン ウィジェットのチェックボックスを正常に操作しました。

/** Set XPath Variables **/
string dropdownWidgetXPath = "//span[contains(@id, 'selInd')]";
string checkboxXPath = "//input[contains(@id, 'selInd')]";

/** Navigate to the page **/
driver.Navigate().GoToUrl("http://www.jobserve.com/us/en/Job-Search/");

/** Click the dropdown widget **/
IWebElement dropdownWidgetElement = driver.FindElement(By.XPath(dropdownWidgetXPath));
dropdownWidgetElement.Click();

/** Identify all checkboxes present **/
var allCheckboxes = driver.FindElements(By.XPath(checkboxXPath));

/** Click each checkbox and wait so that results are visible **/
foreach(IWebElement checkbox in allCheckboxes)
{
     checkbox.Click();
     System.Threading.Thread.Sleep(500);
}
于 2012-08-09T17:56:28.713 に答える
1

Selenium webdriver では、次のように実行できます。

すべてのチェックボックスには一意の識別子が必要であり、ID で簡単に見つけることができます。一意の ID がない場合 (これは Web アプリケーションのテスト中に発生したものです)、タイトルと名前の属性が必要です (または他の属性)。

次に、これを試すことができます:

driver = new FirefoxDriver(); 
driver.findElement(By.xpath("//input[@name='mycheckboxgroup' and @title='movies']")).click();    
driver.findElement(By.xpath("//input[@name='mycheckboxgroup' and @title='songs']")).click();
于 2012-08-13T13:35:08.197 に答える
0

チェックボックスのIDによって、次のコードを使用できます:

IWebElement elementToClick = driver.FindElement(By.ID(ctl00_ContentPlaceHolder1_Add_lstCategory_0));
elementToClick.Click();

IDがわからない場合は、xpathで以下のコードを使用してください。

String checkbox = "//input[@type='checkbox']"
IWebElement elementToClick = driver.FindElement(By.XPath(checkbox ));
elementToClick.Click();
于 2014-04-23T13:09:48.523 に答える
0

Javaで書かれたこのコードを使ってみてください

String checkboxes = "//*[@type='checkbox']";
List<WebElement> elementToClick = driver.findElements(By.xpath(checkboxes));
for (WebElement AllCheck : elementToClick) {
    AllCheck.click();
}
于 2016-10-04T06:42:52.423 に答える
0

のコードseleniumは単純です。

new WebDriverWait(driver, TimeSpan.FromSeconds(timeToHoldOn)).Until(ExpectedConditions.ElementExists((By.ClassName("ckb"))));
IWebElement dropdownWidgetElement = driver.FindElement(By.ClassName("ckb"));
dropdownWidgetElement.Click();
Thread.Sleep(1000);
var allCheckboxes = driver.FindElements(By.ClassName("ckb"));
foreach (IWebElement checkbox in allCheckboxes) {
  checkbox.Click();
  System.Threading.Thread.Sleep(250);
}
于 2015-02-17T14:42:57.367 に答える