JSoupでもほぼ等価なのでこちらを推奨
td#MAINAREA01 > div.tp-box-05 > div > div > p.tp-text-01 | 階層順序を厳格に指定する場合 |
div[class*='_middle_'] | クラス名部分一致 |
div[class^='prefix'] | クラス名前方一致 |
div[class$='_suffix'] | クラス名後方一致 |
カスタマイズ属性で絞る
div[data-custom='xxxx'] | 通常の属性ならhrefなりに変えれば良い |
List<WebElement> webElementList =driver.findElements(By.cssSelector("div[class^='prefix_']")); WebElement login = webElementList.stream().filter(webElement -> webElement.getText().contains("ログイン")).findFirst().get(); login.click();
By.linkText("hogehoge")
クラスで複数取得 | Elements masthead = doc.select("div.masthead"); |
クラスで単数取得 | Element masthead = doc.select("div.masthead").first(); |
階層構造で複数取得 | Elements resultLinks = doc.select("h3.r > a"); // direct a after h3 |
ファイルから読み込み | Document doc = Jsoup.parse(new File("/tmp/input.html"), "UTF-8", "http://example.com/"); |
HtmlElement input = page.getHtmlElementById(id); input.setAttribute("value", value);
webClient.getPage("file:///Users/
//a[@id='idname'] | AタグのIDで抽出 |
//a[@href='/login.html'] | Aタグのリンク先で抽出 |
//input[@type='submit'] | type=submitのタグを取得 |
//input[@value='検索'] | 検索のinputタグを取得 |
//td[contains(.,'検索したい文字列')] | 検索したい文字列が含まれているものを取得 |
img[alt='ログアウト'] | altで検索 |
//a[text()='ログアウト']" | Aのテキストで検索 |
final HtmlDivision div = (HtmlDivision) page.getByXPath("//div[@name='John']").get(0); | 無理やりキャスト |
chromeのコンソールで $x('xpath')でOK!
chromeのコンソールで $('div div div p')
主にPHPバッチで利用
クラスやID指定 | div[class=tbl-pc] |
親子関係 | table tbody tr td |
brew update brew install chromedriver
brew tap homebrew/cask && brew cask install chromedriver
/usr/local/binに入るので手動で入れるならそこに置く
C:\Users\xxx\AppData\Local\Microsoft\WindowsApps
brew update brew install selenium-server-standalone brew install chromedriver
だとだめ!jarを直接実行する。
java -Dwebdriver.chrome.bin="/Applications/Google Chrome.app" -Dwebdriver.chrome.drir=/usr/local/bin/chromedriver -jar selenium-server-standalone-3.4.0.jar
しかし上記のchromedriverさえインストールできればあとはサーバー不要なのであった!