Как выйти из "/" в send_keys? - PullRequest
       4

Как выйти из "/" в send_keys?

0 голосов
/ 24 октября 2019

Запуск сценария, который записывает блок кода в текстовую область на веб-сайте. Первые четыре «строки» пишутся правильно до тех пор, пока var url = "https:, в этот момент курсор переместится в верхний левый угол текстовой области и затем продолжит запись. Каждый раз, когда встречается символ /, курсор возвращается в верхний левый угол, прежде чем продолжить запись.

Как можно предотвратить воздействие на курсор.

Я пытался \/,\\/, {/} и аналогичные способы избежать косой черты.

self.driver.find_element_by_id('textarea').send_keys(
        '\nvar device = this\n\nvar url = "' + baseurl + '/' + firmwarename + '"\n\nvar conv = TR69.createConnection(device)\n\ntry {'+
   'var uuid = java.util.UUID.randomUUID().toString().replace("-","") \n'+

Что он делает физически:

myhiddenurl.comSG9C130016_prod-mycomponent-5260-8a.27.103-combined-squashfs.img.gsdf"
var conv = TR69.createConnection(device)
var device = this
var url = "http:

Обратите внимание, что строки 3 и 4 должны быть 1 и 2И эта строка 1 является продолжением того, что сейчас является строкой 4.

Вот пример кода, который показывает проблему ...

    firmwarename = "tchrisdemo-code-3-2-3.gsdf"
    self.driver.get("https://futureoftesting.us/os.html")
    self.driver.find_element_by_id('textarea').clear()
    baseurl = "http://myhiddendomain.com/"
    self.driver.find_element_by_id('textarea').send_keys(
        '\nvar device = this\n\nvar url = "' + baseurl + '/' + 
    firmwarename + '"\n\nvar conv = TR69.createConnection(device)\n\ntry {'+
   'var uuid = java.util.UUID.randomUUID().toString().replace("-","") \n'+
   'var dlRequest = new TR69.DownloadRequest() \n' )

Строка 5 кода является проблемой. ..

Я пробовал множество изменений, похожих на ваш комментарий. .Format one позволил одному пропустить один символ "/", затем перепрыгнул на вершину текстовой области и продолжил писать на следующем.

    baseurl = r"http://myhiddendomain.com/"
    url = "{}/{}".format(baseurl,firmwarename)
    self.driver.find_element_by_id('textarea').send_keys(
        '\nvar device = this\n\nvar url = "' + baseurl + firmwarename + '"\n\nvar conv = TR69.createConnection(device)\n\ntry {'+
   'var uuid = java.util.UUID.randomUUID().toString().replace("-","") \n'+
   'var dlRequest = new TR69.DownloadRequest() \nThis is formatting: ' + url) 

, который, к сожалению, сгенерировал это:

    var dlRequest = new TR69.DownloadRequest() 
    This is formatting: http:/myhiddendomain.com/
    var device = this    

Не уверен, что я полностью понимаю это решение.
После дополнительных поисков выясняется, что "прыгающий курсор" является известной проблемой ичто "разработчики должны это исправить"

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

Использование ключей. ВОЗВРАТ

from selenium.webdriver.common.keys import Keys

textarea = self.driver.find_element_by_id('textarea')

textarea.send_keys(r"some text without \n")
textarea.send_keys(Keys.RETURN)
textarea.send_keys(r"some other text without \n")

Допустимая альтернатива Keys.RETURN - Keys.ENTER в случае, если первая не работает.

Иливсе еще textarea.submit() вместо отправки клавиш RETURN или ENTER.


Я предлагаю вам использовать .format () для выполнения операции форматирования строки.

Пример:

"url={}/{}".format(url, page)

Я также предлагаю вам взглянуть на флаги 'r' и 'u'.

Что именно делают строковые флаги "u" и "r"do, и что такое необработанные строковые литералы?

Пример:

path = r"D:\Users\Marco"

Чтобы узнать больше о форматировании строки, см. документацию .

0 голосов
/ 24 октября 2019

Обратная косая черта '\' является escape-символом

Так что попробуйте \ / (пробел между ними, чтобы он не выглядел как V, но вы хотите без пробела)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...