message: Store xpath and store attribute specs
diff: import CommandEmitter from "../src/command";
  import { CommandsArray } from "../../selenium-ide/src/neo/models/Command";
  +import LocationEmitter from "../src/location";
  describe("command code emitter", () => {
  it("should fail to emit with no command", () => {
  @@ -331,6 +332,22 @@ describe("command code emitter", () => {
  };
  return expect(CommandEmitter.emit(command)).resolves.toBe(`var ${command.value};driver.getTitle().then(title => {${command.value} = title;});`);
  });
  + it("should emit `store xpath count` command", () => {
  + const command = {
  + command: "storeXPathCount",
  + target: "//button",
  + value: "myVar"
  + };
  + return expect(CommandEmitter.emit(command)).resolves.toBe(`var ${command.value};driver.wait(until.elementsLocated(By.xpath("${command.target}")));driver.findElements(By.xpath("${command.target}")).then(elements => {${command.value} = elements.length});`);
  + });
  + it("should emit `store attribute` command", () => {
  + const command = {
  + command: "storeAttribute",
  + target: "//button[3]@id",
  + value: "myVar"
  + };
  + return expect(CommandEmitter.emit(command)).resolves.toBe(`var ${command.value}; driver.wait(until.elementLocated(By.xpath("//button[3]")); driver.findElement(By.xpath("//button[3]")).then(element => {element.getAttribute("id").then(attribute => {${command.value} = attribute})});`);
  + });
  it("should emit `select` command", () => {
  const command = {
  command: "select",
  