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
ヤフーで実装例。
左カラムの「主なサービス」にリンク(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隅にゴムの足をつけたよ。
・板本体
・裏側のゴム
裏側のゴムは、以下の物を使っています。高さはちょうど良いし、板の滑り止めにもなる。
粘着 ソフトクッション 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