Selenium Python : 正在执行 javascript 代码,但没有生效

Selenium Python : Excuting javascript code, but it deosnt take effect

我正在尝试更改 div 的文本。我试图通过(send_keys)函数来改变它,但是没有用。所以我试着用 java 脚本来改变它,像这样:

element = self.chrome.find_element_by_xpath('//div[@class="ace_line"]')
self.chrome.execute_script("arguments[0].textContent = 'hello world'", element)

注意:我正在尝试更改 div 的文本,因为此 div 是电子邮件消息的容器

它起作用了,但是当我点击“发送”按钮时,它发送了一封空邮件。 有没有办法确认我更改的文本?或 java 脚本中执行此类操作的内容?

很有可能,您正在成功编辑 div 的文本,但是当您单击发送时设置电子邮件正文字符串的 JS 事件侦听器未接收到您的更改。

填写表单时,send keys is the correct approach, which leads me to believe you are not selecting the proper element to type into. You would expect to see an input field (<input type="text" ...>) or maybe a textarea (<textarea ...>) 作为用户输入时获得焦点的元素。

首先要做的是单击您要输入的输入字段,然后在其上 right-click 并检查元素,这应该会引导您进入您输入的最里面的元素。它可能不是 div(尽管它可能包含在一个中)。

在奇怪的情况下,他们确实让您输入 div,您似乎做对了。虽然通常引用的方式不同,但可能是由于 textContentinnerText 属性之间的细微差别,您可能想尝试:

element = self.chrome.find_element_by_xpath("//div[@class='ace_line']")
self.chrome.execute_script("arguments[0].innerText = 'hello world'", element)

在这种不太可能发生的情况下,您可能希望单击 div 以通过发送键将焦点放在 and/or 类型上,这样您的输入就会被站点将接收到的 JS 按键侦听器接收需要配置。

底线:您应该首先使用 chrome/firefox 检查器和 document.getElementBy... 在控制台中找出实际发生的事情网页。应该有一些输入元素 (var input = document.getElementBy...;) 你可以在控制台中 select 其值 属性 (input.value) 将随着你的键入而改变。 Find/muck 在控制台中以编程方式使用此元素,确认它发送了包含所需正文的电子邮件,然后您可以在 python.

中对其进行编码