Variable/Changing ember 对讲机号码 HTML。硒 Python
Variable/Changing ember number in Intercom HTML. Selenium Python
我正在尝试自动化工作中的一些任务。请求不会工作,因为我没有对我的工作对讲应用程序的管理员访问权限。因此我使用硒。
我想在对讲的聊天框里写“嘿”,然后发消息
** 问题是每次我进行新对话时 ember 号码都在变化。当我每次都复制正确的 ember 号码时它有效,但是当改变对话时,它不再起作用了。 **
我正在寻找某种脚本来每次将 ember = XXXXX 更改为正确的数字
与代码问题无关,但我在调试模式下使用 Chrome,以避免每次需要测试代码时都登录,并且我使用 tkinter 有一个按钮可以按下,每次都想在聊天框里写“嗨”
抱歉,我知道这个问题很难重现。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
#___________
#In order to run Selenium in an already opened browser / session, I need to run this code in CMD:
#cd C:\Program Files (x86)\Google\Chrome\Application
#
#chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\Users\peter\testprogram"
#___________
opt=Options()
opt.add_experimental_option("debuggerAddress","localhost:9222")
driver=webdriver.Chrome(executable_path="
C:\ProgramFiles\crromedriver\chromedriver.exe",options=opt)
def hey():
ember = 32890
hey = driver.find_element_by_xpath('//*[@id="ember'+str(ember)+'"]/div/div[3]/div[1]/div/p')
hey.send_keys("Hey!")
我想写“嘿!”的特定 HTML 元素:(这是在下面的大 HTML 代码下)
<p class="intercom-interblocks-align-left embercom-prosemirror-composer-block-selected" style="">Hey! This is where I want my text</p>
有人可能会建议使用
hey = driver.find_element_by_class_name('intercom-interblocks-align-left embercom-prosemirror-composer-block-selected')
hey.send_keys("Hey!")
但这对我不起作用。
ember 数字变化的 HTML 元素:
<div id="ember32890" class="u__relative inbox__conversation-composer__wrapper ember-view"><div>
<div></div>
<div>
</div>
<div data-test-prosemirror-composer="" class="composer-inbox composer-style-basic o__fit conversation__text embercom-prosemirror-composer ">
<style>
.ProseMirror {
outline: none;
white-space: pre-wrap;
}
.ProseMirror .intercom-interblocks-html-block {
white-space: normal;
}
li.ProseMirror-selectednode {
outline: none;
}
.ProseMirror-selectednode.embercom-prosemirror-composer-image img,
.ProseMirror-selectednode.embercom-prosemirror-composer-video iframe,
.ProseMirror-selectednode.embercom-prosemirror-composer-messenger-card
.intercom-interblocks-messenger-card,
.ProseMirror-selectednode.embercom-prosemirror-composer-html-block,
.ProseMirror-selectednode.embercom-prosemirror-composer-button .intercom-h2b-button {
outline: 2px solid #8cf;
}
hr.ProseMirror-selectednode,
.embercom-prosemirror-composer-template.ProseMirror-selectednode,
.embercom-prosemirror-composer-mention.ProseMirror-selectednode {
outline: 1px solid #8cf;
}
</style>
<div>
<!----><div contenteditable="true" role="textbox" dir="auto" data-insertable="true" class="ProseMirror embercom-prosemirror-composer-editor dir-auto"><p class="intercom-interblocks-align-left embercom-prosemirror-composer-block-selected" style="">Hey!Hey!Hey!Hey!Hey!</p><p class="intercom-interblocks-align-left" style=""><br></p></div></div>
<div class="flex flex-row flex-wrap gap-4 embercom-prosemirror-composer-attachment-list">
<!----></div>
<!---->
<!---->
<!---->
<!---->
<!---->
<div></div>
<!---->
<!----></div>
<!---->
<!----></div></div>
如果您想使用 ember,这里有一个可能的解决方案:
hey = driver.find_element_by_xpath('//*[contains(@id="ember")]/div/div[3]/div[1]/div/p')
hey.send_keys("Hey!")
如果有多个带有 id="ember[0-9]+"
的元素,这可能会失败。
如果您想直接访问 p
标签,请使用 find_element_by_css_selector
,如下所示:
hey = driver.find_element_by_css_selector('.intercom-interblocks-align-left.embercom-prosemirror-composer-block-selected')
hey.send_keys("Hey!")
带有 find_element_by_class_name
的代码无效,因为它需要一个 class 名称,而您传递的是两个 class 名称(class 名称由 space).
我正在尝试自动化工作中的一些任务。请求不会工作,因为我没有对我的工作对讲应用程序的管理员访问权限。因此我使用硒。
我想在对讲的聊天框里写“嘿”,然后发消息
** 问题是每次我进行新对话时 ember 号码都在变化。当我每次都复制正确的 ember 号码时它有效,但是当改变对话时,它不再起作用了。 **
我正在寻找某种脚本来每次将 ember = XXXXX 更改为正确的数字
与代码问题无关,但我在调试模式下使用 Chrome,以避免每次需要测试代码时都登录,并且我使用 tkinter 有一个按钮可以按下,每次都想在聊天框里写“嗨”
抱歉,我知道这个问题很难重现。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
#___________
#In order to run Selenium in an already opened browser / session, I need to run this code in CMD:
#cd C:\Program Files (x86)\Google\Chrome\Application
#
#chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\Users\peter\testprogram"
#___________
opt=Options()
opt.add_experimental_option("debuggerAddress","localhost:9222")
driver=webdriver.Chrome(executable_path="
C:\ProgramFiles\crromedriver\chromedriver.exe",options=opt)
def hey():
ember = 32890
hey = driver.find_element_by_xpath('//*[@id="ember'+str(ember)+'"]/div/div[3]/div[1]/div/p')
hey.send_keys("Hey!")
我想写“嘿!”的特定 HTML 元素:(这是在下面的大 HTML 代码下)
<p class="intercom-interblocks-align-left embercom-prosemirror-composer-block-selected" style="">Hey! This is where I want my text</p>
有人可能会建议使用
hey = driver.find_element_by_class_name('intercom-interblocks-align-left embercom-prosemirror-composer-block-selected')
hey.send_keys("Hey!")
但这对我不起作用。
ember 数字变化的 HTML 元素:
<div id="ember32890" class="u__relative inbox__conversation-composer__wrapper ember-view"><div>
<div></div>
<div>
</div>
<div data-test-prosemirror-composer="" class="composer-inbox composer-style-basic o__fit conversation__text embercom-prosemirror-composer ">
<style>
.ProseMirror {
outline: none;
white-space: pre-wrap;
}
.ProseMirror .intercom-interblocks-html-block {
white-space: normal;
}
li.ProseMirror-selectednode {
outline: none;
}
.ProseMirror-selectednode.embercom-prosemirror-composer-image img,
.ProseMirror-selectednode.embercom-prosemirror-composer-video iframe,
.ProseMirror-selectednode.embercom-prosemirror-composer-messenger-card
.intercom-interblocks-messenger-card,
.ProseMirror-selectednode.embercom-prosemirror-composer-html-block,
.ProseMirror-selectednode.embercom-prosemirror-composer-button .intercom-h2b-button {
outline: 2px solid #8cf;
}
hr.ProseMirror-selectednode,
.embercom-prosemirror-composer-template.ProseMirror-selectednode,
.embercom-prosemirror-composer-mention.ProseMirror-selectednode {
outline: 1px solid #8cf;
}
</style>
<div>
<!----><div contenteditable="true" role="textbox" dir="auto" data-insertable="true" class="ProseMirror embercom-prosemirror-composer-editor dir-auto"><p class="intercom-interblocks-align-left embercom-prosemirror-composer-block-selected" style="">Hey!Hey!Hey!Hey!Hey!</p><p class="intercom-interblocks-align-left" style=""><br></p></div></div>
<div class="flex flex-row flex-wrap gap-4 embercom-prosemirror-composer-attachment-list">
<!----></div>
<!---->
<!---->
<!---->
<!---->
<!---->
<div></div>
<!---->
<!----></div>
<!---->
<!----></div></div>
如果您想使用 ember,这里有一个可能的解决方案:
hey = driver.find_element_by_xpath('//*[contains(@id="ember")]/div/div[3]/div[1]/div/p')
hey.send_keys("Hey!")
如果有多个带有 id="ember[0-9]+"
的元素,这可能会失败。
如果您想直接访问 p
标签,请使用 find_element_by_css_selector
,如下所示:
hey = driver.find_element_by_css_selector('.intercom-interblocks-align-left.embercom-prosemirror-composer-block-selected')
hey.send_keys("Hey!")
带有 find_element_by_class_name
的代码无效,因为它需要一个 class 名称,而您传递的是两个 class 名称(class 名称由 space).