Selenium(WebDriver) findElementsとfindElementの違い

findElementはWebElementが返り、findElementsはWebElementがリストに格納されて返ってきます。

findElement

WebElement findElement(By by)

findElements

List<WebElement> findElements(By by)

findElement(By by)はWebElementが返り、findElements(By by)はListが返ります。

ヤフーで実装例。
f:id:jigsaw_coltd:20130927160619p:plain
左カラムの「主なサービス」にリンク(aタグ)が含まれている事を確認してみる。
「主なサービス」は、xpathで"//*[@id="yahooservice"]"でアクセスできる。

String TargetTag  = "a";

WebElement WebElement = WebDriver.findElement(By.id("yahooservice"));
List<WebElement> WebElementList = WebElement.findElements(By.tagName(TargetTag));

for (int i = 0; i < WebElementList.size(); i++) {
	System.out.println(WebElementList.get(i).);
}
	
if(WebElementList.size == 0){
	fail("そのタグはない!");
} else {
	System.out.println(WebElementList.size+ "個の" + TargetTag + "タグが見つかりました。");
}

"WebDriver.findElements(By.tagName("a"));"をいきなり実行すると、現在のページ内全てから"a"タグを検索する。
なので、"WebElement Element_yahooservice = driver.findElement(By.id("yahooservice"));"で検索したい要素を指定しておいて、そこへ"WebElement.findElements(By.tagName("a"));"と打つと、指定した要素内から指定したタグ(ここでいうと"a")を検索してくれる。

Selenium(WebDriver)でテーブルの行数を取得する

Selenium(WebDriver)でテーブルの行数を取得する方法
findElementでテーブルを指定し、そこから[tagName]で[tr]を検索し、サイズを取得する

driver.findElement(By.xpath("html/body/div/div/table/tbody")).findElements(By.tagName("tr")).size();


ユーティリティクラス化

public static int getTableRowSize(By by) {
	try {
		return driver.findElement(by).findElements(By.tagName("tr"))
				.size();
	} catch (NoSuchElementException e) {
		System.out.println(e);
	}
}

PowerShellでカレントディレクトリの一番新しいやつ頼む

一時フォルダにあるファイルの中で更新日時が一番新しいファイルを得るワンライナー
http://d.hatena.ne.jp/chabom/20100810/1281403373

これを参考に書いてみた

名前だけで良いなら、[.Name]

 PS C:¥ >(Get-ChildItem | Sort-Object LastWriteTime -Desc)[0].Name
hogehoge.txt

フルパス欲しかったら、[.FullName]で

 PS C:¥ >(Get-ChildItem | Sort-Object LastWriteTime -Desc)[0].FullName
C:¥hogehoge.txt

指定ディレクトリからなら、

 PS C:¥ >(Get-ChildItem C:¥Windows¥system32 | Sort-Object LastWriteTime -Desc)[0].FullName
C:¥Windows¥system32¥hogehoge.txt

maven-surefire-pluginで.xmlを出力しない

http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#disableXmlReport

・やり方
disableXmlReportをtrueにする

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-surefire-plugin</artifactId>
	<version>2.10</version>
	<configuration>
		<disableXmlReport>true</disableXmlReport>
	</configuration>
</plugin>

MBAのキーボード上にHHKB置くための板を作った(オーダー方法追記)

Mac book airのキーボードの上にHappyHackingKeyboardを置くために、アクリルで板を作った。
写真撮ったあとに、4隅にゴムの足をつけたよ。

・板本体
f:id:jigsaw_coltd:20130613104100j:plain

・裏側のゴム
f:id:jigsaw_coltd:20131229023106j:plain

裏側のゴムは、以下の物を使っています。高さはちょうど良いし、板の滑り止めにもなる。

粘着 ソフトクッション CN-009 透明ウレタンタイプ
http://store.shopping.yahoo.co.jp/brico/03012307-211834.html

追記:
あまりにアクセスが多いので、製作方法について追記。

アクリルの板を自分で加工するのは大変なので、以下のアクリル加工専門の会社にオーダーしました。

アクリル板、アクリルケース、アクリル加工専門販売アクリルショップ「はざい屋」
http://www.hazaiya.co.jp/

僕はネットからオーダーしたのですが、お店でその場でカットもやって頂けるみたいです。
http://www.hazaiya.co.jp/store01.html

以下がMac book Airにキーボードを乗せる板を作った時の寸法・オプションです。
横幅は、もう少し持たせてもよかったなあと若干後悔(+3mmくらい)。

板 :透明アクリル板(キャスト) 厚さ 3mm サイズ 135×324 mm
角丸めA:R=10.0mm
角丸めB:R=10.0mm
角丸めC:R=10.0mm
角丸めD:R=10.0mm
カンナ仕上げA
カンナ仕上げB
カンナ仕上げC
カンナ仕上げD

この仕様で、アクリル板代と加工代あわせて794円でした。
送料が840円かかってしまったので、合計1500円くらい。
お店に直接行って、寸法測ってもらって作れば良かった。。。

MysqlでCSVから特定列だけインポートする

かきかた

LOAD DATA LOCAL INFILE "インポートするCSVがある場所" 
INTO TABLE テーブル名
FIELDS TERMINATED BY '区切り文字'
LINES TERMINATED BY '行の改行文字' 
(@CSV側のカラム番号)
SET Mysql側のカラム名=@1;

sample

LOAD DATA LOCAL INFILE "/tmp/import_data.csv" 
INTO TABLE import_csv
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n' 
(@1,@2,@3,@4,@5,@6,@7,@8,@9,@10,@11,@12,@13,@14,@15,@16,@17,@18,@19,@20,@21,@22,@23,@24,@25,@26,@27,@28,@29,@30,@31,@32,@33)
SET column1=@1, column2=@4, column3=@20, column4=@33;

PowerShellでXMLから配列を取得する

・title.xml

<ROOT>
 <TITLE>1</TITLE>
 <TITLE>2</TITLE>
 <TITLE>3</TITLE>
</ROOT

とあったら、

jigsaw> [xml]$title_array = Get-Content -path .¥title.xml
jigsaw> $title_array
jigsaw> 1
jigsaw> 2
jigsaw> 3
jigsaw> $title_array.Length
jigsaw> 3