Вставка текста в неформальный объект - PullRequest
0 голосов
/ 11 июля 2019

(это мой первый в истории сценарий селена и первое в истории сообщение о стеке, я не совсем понимаю, как сделать это прилично: P)

Я пытаюсь вставить переменную (число) во что-то, что не 'Похоже, что это объект формы (вместо тела).

При редактировании с использованием элемента inspect я могу редактировать html тела, и это позволит мне публиковать этот отредактированный html как новое сообщение на форуме.Так что это может быть потенциальный метод вставки переменной в html.

Пример работы с Youtube на коде: https://www.youtube.com/watch?v=_6VqrMOMBeI

Пример Youtube для редактирования кода тела вручную и публикации https://youtu.be/YrT88IV-obg:

Ссылка на сайт (если вы хотите посмотреть) https://camelotkingdom.com

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

Это основной поток, который я нашел: Изменить innerHTML с помощью Selenium

Python Code:

loginpage = 'http://camelotkingdom.com/login'
# login page for the website (login code redacted)

thread = 'http://camelotkingdom.com/threads/count.22/'
# counting thread link

main_browser = webdriver.Chrome("D:\AutoForum\extras\chromedriver.exe")
# chrome driver variable

# below code collects the latest count number (based on post number)
def getlatestnumber():
    main_browser.get(thread)
    # goes to the thread page

    time.sleep(2)
    # waiting for page to fully load

    links = main_browser.find_elements_by_partial_link_text('#')
    for link in links:
        a = link.get_attribute("text")
        a = a.replace('#', '')
        a = int(a)
    # grabs the current count number

    global currentnum
    currentnum = a + 1
    # sets the next count number

    print("[DEBUG] Next count is:",currentnum)

def post_main():
    print("[DEBUG] Number posting:",currentnum)

    comment = "test"
    # text to enter into the post creator iframe

    editable = main_browser.find_element_by_css_selector("iframe")
    editable.click()
    # finding and clicking the post creator iframe

    element = main_browser.execute_script("var ele=arguments[0]; ele.innerHTML = '<p>" + comment +  "</p>';", editable);
    # editing the iframe code to include the variable in a paragraph tag.



 #main_browser.find_element_by_xpath("/html/body/div[2]/div/div[2]/div/div/div[2]/div[4]/form/div[2]/input[2]").click()

Код тела сайта

<body contenteditable="true" dir="LTR" style="overflow-y: hidden; min-height: 99px;"><p><br></p></body>

Полный код: view-source: http://camelot.treasuremc.net/threads/count.22/

Я ожидаю, что код будет публиковать переменную в ветке форума.

1 Ответ

1 голос
/ 11 июля 2019

Пожалуйста, попробуйте этот фрагмент кода ниже.

 iframe = driver.find_elements_by_tag_name("iframe")[0]
 driver.switch_to.frame(iframe)
 driver.execute_script("document.body.innerHTML = '<p>test</p>'")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...