Atomeditorでmarkdown記法を行う際に、行末のスペースが削除されて困った件
このブログを書くにあたって、markdown記法を使用していますが、markdown記法の場合、文末にスペース二つで改行になりますよね?
でも、Atomちゃんは、デフォルトの設定では文末の無駄なスペースは削除しちゃうらしいです。
困った・・・困ったぞ・・・と思い調べていたら、何やらデフォルトで入っているパッケージによる設定とのこと。
以下の設定を切り替えることで、このスペース削除を無くすことが出来ました。
1.[File]-[settings]を開く。
※Cmd+, のショートカットキーでも開きます。
2.左メニューより[Packages]を選択。
3.検索テキストボックスに「whitespace」と入力し検索。
4.[Core Packages]-[whitespace]-[settings]を選択。
5.[Disable]ボタンを押下
これで無問題です!!!やったぜ!!!
皆様も快適なAtomライフを!
同一Xpathの順番(何個目)を指定するための簡単な方法
SeleniumWebDriverでXpathを指定する際に、同一HTML内に同じ階層に同じタグが存在することってよくありますよね?
例えば、はてなブログ内で同一タグの一覧を開いている場合に、タグの一番目の”QAエンジニア”のテキストを指定したい場合とか。
Xpathをフルパスで指定すればいいといえばいいんですが、汎用性に欠けるので、一番短いXpathで書きたいなと。そんな場合に私が使っているXpathの指定方法です。
- HTMLの例
<div> <a href="http://autotestengineer.hatenablog.com/archive/category/QA%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2">QAエンジニア</a> <a href="http://autotestengineer.hatenablog.com/archive/category/QA%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2">QAエンジニア</a> </div>
- 指定方法
driver.findElement(By.xpath("(//a[text()='QAエンジニア'])[1]"));
自分がつまづいたポイントとしては、
//a[text()='QAエンジニア']
ではなく、
(//a[text()='QAエンジニア'])[1]
とXpath全体を()で括ってその外に[1]と添字を付けてあげるところでした。
Xpathとか全然詳しく無かったので、初めははまりましたのでご参考まで。
エンジニア40歳定年説を自分の転職経験から話してみる
よくある都市伝説 エンジニア40歳定年説は本当なのか?
私は、大学卒業後すぐにIT業界に入りました。
10年ぐらい前ですかね。その時からすでに
「ITエンジニアは30代半ばで切られるよ」
「会社に肩たたかれるよ」
という噂はまことしやかにささやかれていました。
ただ、ITバブル終わりかけぐらいのその時点では、そもそもITエンジニアで平均年齢40歳超えてる様な会社ってほとんど無かったんですよね。。。
漠然とした不安に陥った若かりし時期
この40歳定年説、実際にリーマン・ショック時には私のいた会社でも起きました。といっても、リーマン・ショックによる会社の損失回避のためにコストの高い人が肩をたたかれていただけで、それも40歳定年説とは直接は結びついていなかった気がしています。
ただ、私はIT業界しか経験していなかったので、ITスキルを持っていても、コストが高くなれば、ひとつのキッカケで正社員でも切られてしまうんだな、と現実を見て漠然とした不安を感じました。
起業する様な志向は持っていなかったので、どこでも通用する人材になるべく、この時点で一度外の世界が見てみたくなり、転職しました。
IT業界の外に出てみて感じたこと
私は建築とか不動産とかの古い業界へ転職をしました。
特にSEとして転職した訳ではなく、広報みたいな職に就きました。
(100人規模ぐらいの会社)
そこで見たものは、、、
- パソコンの初期設定に右往左往する人々
- Excelの簡単な資料作成にまる1日かける人々
- データよりFAXを重視する人々
- 分かっていないがセキュリティにはやけに厳しい人々w
あれ?ITスキルを活かせる場所って予想以上に溢れている?
というのが外の世界を見た感想でした。
実際に、私の仕事の何割かはITスキルを用いた業務の効率化などでした。
ExcelでVBAのマクロを組んでみたり、色々な書類のフォーマットを使いやすく用意してみたり・・・
高いスキルが必要な訳では無いですが、それでも20〜60代で幅広い世代のいる会社でそれなりに活かすことができました。
そんな私の結論としては、
40歳になってもエンジニアは元気に生きていける!
でした。
エンジニアとして地方移住したいという想い
地方移住をなぜしたいのか
なぜ地方移住したいのか・・・(現在子育て中という前提を踏まえ)
- 生まれ育った田舎に近い環境で子育てをしたい。
- 10年近く関東圏にいるが、未だに地元と感じる瞬間が無い。
- 一戸建て+車という地方っぽい暮らしが好き。
こんな大学卒業時に考えろよ、と思うようなことが今更になってふつふつと沸き立ってきた、という次第です。 といっても、やはりデメリットもあります。
- 社会人になってからの人脈を手放す。(連絡が取れない訳では無いが)
- QAエンジニアとしての豊富な働き口。
- 何でも徒歩圏で揃う利便性。
おおぅ、なんて致命的なデメリット・・・
特に、収入面に直結する2点目は厳しいなぁ、と地方の求人を見ていてとても思います。 これだけ地方分権であったり、震災などによるリスク分散で地方への展開が叫ばれていても、やはりQAエンジニアの求人は地方にはあまりありません。
いえ、無いと言えば嘘になりますが、いわゆるニアショアな案件が多く、自社プロダクトで・・・みたいなものが少ないと言った方が適切かもしれません。
もし、地方に移住しずっとQAエンジニアを続けていくのであれば、長期的な目線で携われるものがいいなぁ、なんて欲張りすぎかw
何にしても、少しずつレベルアップを図りつつ、仕事を多少でも選べる様になっておきたいな、と考えています。
純粋な開発者ではないので、起業という選択肢は今のところ全く描けておりません。
北か西かはたまた南か、地方移住を考えている時間は楽しいぜw
Javaでのプロジェクト構築に関してmaven環境を作ってみた
Mavenを使用してみよう
Javaを利用する際に、例えばSeleniumWebDriverで書く上で使用するライブラリを別にインストールしたり、といったことがあった場合・・・ (例えば、Selenideといったより簡易にソースコードを書くことができるものをインストールしたい場合などです)
Web上にファイルとかが落ちてなくて、Mavenで引っ張って的な事が書いてある。 よく仕組みは分からんが、とりあえずMavenベースでプロジェクトを管理するという課題にぶちあたった訳です。
とりあえず、Mavenは便利だ便利だ、という声を聞いたことはあるので、環境構築をしてみようw
とりあえずWebからインストーラを引っ張ってきて設定
※私の使用している環境は、Windows環境です。
0.環境変数「JAVA_HOME」に JDKインストール先を指定。
例)C:\Program Files\Java\jdk1.8.0_91
※JAVA_HOMEの指定をしていないとエラーになります!
1.下記のURLにアクセス。
http://maven.apache.org/
2.[Files]欄の[Binary zip archive]列にある「apache-maven-3.3.9-bin.zip」をクリック。
3.ダウンロードしたファイルを解凍して以下に展開。(たぶんどこでも良い)
C:\apache-maven-3
4.環境変数「PATH」にMavenのexeのあるディレクトリを指定。
例)C:\apache-maven-3\bin
5.コマンドプロンプトを起動して、以下のコマンドを入力。
mvn --version
6.ログで、「Apache Maven 3.3.9 *」みたいなのが出ればOKみたい。
一応、この手順でmavenのプロジェクトを作るための準備は整う模様。 次はプロジェクト構築の部分で試してみたことを書く予定。
SeleniumWebDriverで暗黙的なWait(Sleep)を入れてみる。
SeleniumWebDriverで暗黙的なWaitを入れたい
自動化で操作を行う場合に、一番ネックになる部分、それは画面の切り替わりであったり、何かしらの処理を「待つ」ということではないでしょうか。
- 何を持って画面が切り替わったと判定するのか。
- 何を持って処理が終了したと判定するのか。
このあたり、自動化のスクリプトを安定させるためには非常に重要ですよね。
画面の切り替わりを判定させる。
方法としては、期待する画面が表示された場合に表示されるであろう何かを待つようにする。を一つの例として。
public class ExTest { WebDriver driver; ExTestPage ex; @Test public void test1() { //driverのプロパティの設定。 System.setProperty("webdriver.chrome.driver", "./driver/chromedriver.exe"); //driverにchromeDriverをセット。 driver = new ChromeDriver(); //Web画面の要素を操作するためのWebelementを生成。 WebElement element; //★waitを生成。(最大5秒待つ、みたいな設定だった様な) WebDriverWait wait = new WebDriverWait(driver, 5); //ブラウザの立ち上げ。(初期ページの指定) driver.get("http://autotestengineer.hatenablog.com/"); //ページ内の”QAエンジニア”の文字列を含む”aタグ”をelementにセットして、クリックする。 element = driver.findElement(By.xpath("(//a[text()='QAエンジニア'])[1]")); element.click(); //★一覧画面にしか表示されない「トップ」というspan属性のtitle属性が表示されることを待つ。 wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[text()='トップ']"))); //ブラウザ終了。 driver.quit(); } }
処理の終了を判断させる
これは、処理が走った後に画面は切り替わらないが、ボタンが押せるようになるのを待ちたいケースとか。 要は、押せるようになるを検知する、を一つの例として。
上記の
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[text()='トップ']")));
を以下の様に記載すれば実現可能です。
下記で待った後にクリック処理を入れるようにすれば、動作として安定するかもです。
//★一覧画面にしか表示されない「トップ」というspan属性のtitle属性が表示されることを待つ。 wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//span[text()='トップ']")));
ちょっと自分で試したことがあるものを履歴がてら残してみました。
SeleniumWebDriverをまず起動から終了まで
WebDriverでブラウザを立ち上げたい時
まず、WebDriverつったらブラウザ上で操作を行う事を自動化するもんだし、これが無いと始まらないよねってことで簡単に簡単な流れをメモ。
- 操作の流れ。
1.ブラウザの起動
2.Googleへアクセス
3.ブラウザ終了
public class ExTest { WebDriver driver; @BeforeClass pu」blic void setup() { System.setProperty("webdriver.chrome.driver", "./driver/chromedriver.exe"); } public void init(){ driver = new ChromeDriver(); } @Test public void test1() { this.init(); driver.get("https://www.google.co.jp/"); } public void exit(){ driver.quit(); } }
- 補足
上記の場合、ChromDriverを使用しているため、@BeforeClassでドライバの指定を行っています。 また、さしたる意味は無いですが、ドライバの初期化をinit()メソッド内で行っています。