1 (изменено: Autosql, 2016-10-25 15:55:32)

Тема: AHK: Ошибка character некорректная запись в коде

Привет.
Подскажите, что не так написано в коде, почему такая ошибка, что от меня хочет autohotkey

Пробую сделать код в таком виде:


14 Vibor :={Yes: ""//div[@data-id='98E010E03463FA45645dwd3E37A']//input[@value='t']"", ;  ДА
15 		      No: ""//div[@data-id='98E010E0346BF63A895B3FAE37A']//input[@value='f']"", ;  НЕТ
16		     tip1: ""//div[@data-id='1F8A94A91DD8BDf368B69A11AB7']//input[@value='0']"",; Тип 1
17		     tip2: ""//div[@data-id='1F8A94A91DD264D38B69A11AB7']//input[@value='1']"", ; Тип 2
18		     tip3: ""//div[@data-id='1F8A94A91DD2640138B69A11AB7']//input[@value='2']"" ; Тип 3
19		     }

---------------------------
При запуске показывает ошибку.
Как я понял ругается на символ '


Error at line 14.

Line Text: '98E010E03463FA45645dwd3E37A'
Error: The leftmost character above is illegal in an expression.

Пробовал брать его в кавычки {'}
Тогда показывает немного другую ошибку.

Error at line 14.

Line Text: '
Error: The leftmost character above is illegal in an expression.

Я не пойму что он от меня хочет.

Цель:
Когда я в коде запрошу этот параметр, например


driver.findElementByXPath(Vibor.Yes).click

Чтобы в итоге получить как бы, такую строчку.


driver.findElementByXPath("//div[@data-id='98E010E03463FA45645dwd3E37A']//input[@value='t']").click

Чтобы был сделан реальный переход.

Надеюсь объяснил нормально.
Как я понимаю нужно какие-то из спец символов обнести кавычками.
Или я точно не пойму что нужно.

2

Re: AHK: Ошибка character некорректная запись в коде

Вместо удвоенных двойных кавычек попробуйте использовать однократные двойные кавычки, иначе
//div[@data-id='98E010E03463FA45645dwd3E37A']//input[@value='t']
трактуется как выражение, а не как строка.

3 (изменено: Autosql, 2016-10-25 17:27:45)

Re: AHK: Ошибка character некорректная запись в коде

Если сделать без двойных кавычек, тогда показывается такая ошибка.



Error at line 15.

Line Text: No: "//div[@data-id='98E010E03463FA45645dwd3E37A']//input[@value='f']",
Error: This line does not contain a recognized action.

или такой вариант. с 1 кавычкой, и тогда одинарную кавычку в середине кода нужно закрыть таким кодом {'} иначе не понятно где начало где конец.  но как видим так же не помогло



Line Text: CreditYes: '//div[@data-id={'}98E010E03463FA45645dwd3E37A{']]//input[@value={']t{'}]...
Error: This line does not contain a recognized action.


4

Re: AHK: Ошибка character некорректная запись в коде

Вместо:

Yes: ""//div[@data-id='98E010E03463FA45645dwd3E37A']//input[@value='t']""

Надо:

Yes: """//div[@data-id='98E010E03463FA45645dwd3E37A']//input[@value='t']"""

5

Re: AHK: Ошибка character некорректная запись в коде

Autosql пишет:

14 Vibor :={Yes: ""//div[@data-id='98E010E03463FA45645dwd3E37A']//input[@value='t']"", ;  ДА
15 		      No: ""//div[@data-id='98E010E0346BF63A895B3FAE37A']//input[@value='f']"", ;  НЕТ
16		     tip1: ""//div[@data-id='1F8A94A91DD8BDf368B69A11AB7']//input[@value='0']"",; Тип 1
17		     tip2: ""//div[@data-id='1F8A94A91DD264D38B69A11AB7']//input[@value='1']"", ; Тип 2
18		     tip3: ""//div[@data-id='1F8A94A91DD2640138B69A11AB7']//input[@value='2']"" ; Тип 3
19		     }

Во-первых, не нужно в теге code вставлять номера строк, код должен быть в том виде, в котором его можно запустить. Во-вторых, неправильный синтаксис переноса строк — запятая должна быть перенесена на новую строку:

Vibor := { Yes:  """//div[@data-id='98E010E03463FA45645dwd3E37A']//input[@value='t']"""   ; ДА
         , No:   """//div[@data-id='98E010E0346BF63A895B3FAE37A']//input[@value='f']"""   ; НЕТ
         , tip1: """//div[@data-id='1F8A94A91DD8BDf368B69A11AB7']//input[@value='0']"""   ; Тип 1
         , tip2: """//div[@data-id='1F8A94A91DD264D38B69A11AB7']//input[@value='1']"""    ; Тип 2
         , tip3: """//div[@data-id='1F8A94A91DD2640138B69A11AB7']//input[@value='2']""" } ; Тип 3
         
MsgBox, % Vibor.Yes
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6 (изменено: Autosql, 2016-10-25 18:56:59)

Re: AHK: Ошибка character некорректная запись в коде

ох.
Спасибо. Оказалось как всегда запятая не там
А номера строк я написал, чтобы видно было на какую строчку ошибка идет.

А зачем аж 3 кавычки ? " " "  как они описываются ?
1 кавычка это которая мне нужна.
2 кавычка это которая закрывает
3 кавычка что делает ?

7

Re: AHK: Ошибка character некорректная запись в коде

Autosql пишет:

А номера строк я написал, чтобы видно было на какую строчку ошибка идет.

Это можно в комментарии написать.

Autosql пишет:

А зачем аж 3 кавычки ? " " "  как они описываются ?

Когда кавычка подразумевается, как литерал, она должна просто удваиваться. Т. е. первая — открывающая, вторая — предваряющая, показывающая, что следующая — текстовая.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8

Re: AHK: Ошибка character некорректная запись в коде

Пример:

MsgBox, % """"
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9

Re: AHK: Ошибка character некорректная запись в коде

Чтобы вывести икс в кавычках:

MsgBox, % """X"""

10

Re: AHK: Ошибка character некорректная запись в коде

Понятно.
Ох я неудачник )) Сделал все как описал. Запустился скрипт. Но упал на переносе переменной.

Получился такой код:


#SingleInstance, Force
#Persistent
Random, rnd, 100,999 

Vibor := {Create: "//a[@data-id='94F53529BB3C3800DEC277841279D79']" 								; C
		 , Yes:  """//div[@data-id='98E010E0346B3B9393863A895B3FAE37A']//input[@value='t']"""   	; ДА
         , No:   """//div[@data-id='98E010E0346B3B9393863A895B3FAE37A']//input[@value='f']"""   	; НЕТ
         , tip1: """//div[@data-id='1F8A94A91DD264012DB68B67669A11AB7']//input[@value='0']"""   		; Г
         , tip2: """//div[@data-id='1F8A94A91DD264012DB55368B69A11AB7']//input[@value='1']"""   		; З
         , tip3: """//div[@data-id='1F8A94A91DD264012DB35558B69A11AB7']//input[@value='2']""" } 		; С

;запустили селениум
driver := ComObjCreate("Selenium.ChromeDriver")

;перешли по ссылке
driver.Get("https://yandex.ru")

;нашли кнопку
driver.findElementByXPath("Vibor.Create").click

Сайт указываю яндек. делаю на внутреннем сайте без доступа вне.

Пишет ошибку:


Error:  0xA00A0007 - 
Source:		Selenium
Description:	NoSuchElementError
Element not found for XPath=Vibor.Create
HelpFile:		(null)
HelpContext:	0

Specifically: findElementByXPath

	Line#
--->	050: driver.findElementByXPath("Vibor.Create").click  
	053: driver.findElementByXPath(Vibor.Yes).click  

Я пробовал 2 варианта передачи.
1:

 "//a[@data-id='94F53529BB3C3800DEC277841279D79']" 

driver.findElementByXPath("Vibor.Create").click

2:

 """//a[@data-id='94F53529BB3C3800DEC277841279D79']""" 

Но в driver.findElementByXPath(Vibor.Create).click убирал кавычки

Но оба варианта не прокатили.
Что я не так делаю не пойму?

Например если пробую вывести это в строку, то все ок.


zz := Vibor.Yes
send %zz%

11

Re: AHK: Ошибка character некорректная запись в коде

Это:

Create: "//a[@data-id='94F53529BB3C3800DEC277841279D79']"
driver.findElementByXPath("Vibor.Create").click

замените на:

Create: """//a[@data-id='94F53529BB3C3800DEC277841279D79']"""
driver.findElementByXPath(Vibor.Create).click

12 (изменено: Autosql, 2016-10-26 12:39:48)

Re: AHK: Ошибка character некорректная запись в коде

Поменял.
Показалась немного другая ошибка.


Error:  0xA00A0020 - 
Source:		Selenium
Description:	InvalidSelectorError
invalid selector: Unable to locate an element with the xpath expression "//a[@data-id='94F13529BB3C380D79']" because of the following error:
TypeError: Failed to execute 'evaluate' on 'Document': The result is not a node set, and therefore cannot be converted to the desired type.
  (Session info: chrome=54.0.2840.71)
  (Driver info: chromedriver=2.24.417431 (9aea000394714d2fbb20850021f6204f2256b9cf),platform=

Specifically: findElementByXPath

Если подставить код по старинке, то отрабатывает клик.


driver.findElementByXPath("//a[@data-id='94F13529BB3C380D79']").click

13

Re: AHK: Ошибка character некорректная запись в коде

Поместите ключи в объекте Vibor в обычные одинарные кавычки. Просто изначально неправильно вас понял.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

14 (изменено: Autosql, 2016-10-26 13:09:04)

Re: AHK: Ошибка character некорректная запись в коде

Если так.


driver.findElementByXPath(Vibor.'Create').click

То ошибка.


Line Text: 'Create'
Error: The leftmost character above is illegal in an expression.

-------
У меня сейчас получается так:


Vibor := {Create: """//a[@data-id='94F13529BB3C3800D2A0AAED09EC277841279D79']"""}
...
driver.findElementByXPath(Vibor.'Create').click

15

Re: AHK: Ошибка character некорректная запись в коде

Правильно так:

Vibor := {Create: "//a[@data-id='94F13529BB3C3800D2A0AAED09EC277841279D79']"}

driver.findElementByXPath(Vibor.Create).click

Если выдаёт какую-то ошибку, то дело не в синтаксисе, может, значение неверно указали.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

16

Re: AHK: Ошибка character некорректная запись в коде

Autosql пишет:

Если подставить код по старинке, то отрабатывает клик.

driver.findElementByXPath("//a[@data-id='94F13529BB3C380D79']").click

У вас тут

//a[@data-id='94F13529BB3C380D79']

а в ключе

//a[@data-id='94F13529BB3C3800D2A0AAED09EC277841279D79']

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

17

Re: AHK: Ошибка character некорректная запись в коде

То что разница в ключе, это я просто сокращал, чтобы строка была меньше тут в тексте

Попробовал такой вариант:


Vibor := {Create: "//a[@data-id='94F13529BB3C3800D2A0AAED09EC277841279D79']"}

driver.findElementByXPath(Vibor.Create).click

Вроде сработало.
Спасибо. Буду дальше пробовать.

18 (изменено: Autosql, 2016-10-27 12:44:13)

Re: AHK: Ошибка character некорректная запись в коде

Спасибо помогло.
Продолжение в следующей теме http://forum.script-coding.com/viewtopic.php?pid=108625

19

Re: AHK: Ошибка character некорректная запись в коде

У нас принято правило: одна тема — один вопрос. Создавайте новую, желательно с внятным названием.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder