当前位置: 首页 > 面试题库 >

使用Python在Selenium中运行javascript

晋弘义
2023-03-14
问题内容

我对Selenium完全陌生。我想在以下代码中执行一个javascript代码段(如代码中所注释),但是无法执行。请帮忙。

from selenium import webdriver
import selenium
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
import time

patch = raw_input("Enter patch number\n")
rel = raw_input("Enter release\n")
plat = raw_input("Enter port\n")

browser = webdriver.Firefox()

browser.get("xxxxxxxxxxxxxxxxx")

pdtfamily = browser.find_element_by_id("prodFamilyID")
pdtfamily.send_keys("Database & Tools" + Keys.TAB)
time.sleep(5)

pdt = browser.find_element_by_id("productID")
pdt.send_keys("Intelligent Agent" + Keys.TAB)
time.sleep(5)

pdt1 = browser.find_element_by_id("patchCacheChkBxID")
pdt1.send_keys(Keys.SPACE)
time.sleep(5)

pdt7 =  browser.find_element_by_id("M__Idf")
pdt7.send_keys(plat)

pdt8 =  browser.find_element_by_id("M__Idg")
pdt8.send_keys("American English")

# Here I want to execute this javascript - "submitForm('patchCacheAdd',1,{'event':'ok'});return false"

browser.close()

如果我使用-

selenium.GetEval("submitForm('patchCacheAdd',1,{'event':'ok'});return false")

它错误地显示为-

AttributeError: 'module' object has no attribute 'GetEval'I

问题答案:

尝试browser.execute_script代替selenium.GetEval

要返回值,只需return在传递给execute_script()方法的字符串中使用JavaScript关键字,例如

>>> from selenium import webdriver
>>> wd = webdriver.Firefox()
>>> wd.get("http://localhost/foo/bar")
>>> wd.execute_script("return 5")
5
>>> wd.execute_script("return true")
True
>>> wd.execute_script("return {foo: 'bar'}")
{u'foo': u'bar'}
>>> wd.execute_script("return foobar()")
u'eli'


 类似资料:
  • 我有一个python脚本,在下一行中通过selenium调用chrome。 python脚本是从shell脚本调用的。 当我从终端运行脚本或只是执行时。sh文件它工作得很好,但当我计划crontab作业时,它会失败,并出现下一个错误。 错误与此问题的第一行代码有关。有人知道为什么会这样吗?

  • 问题内容: 我有一个Python脚本,通过下一行通过selenium调用chrome。 python脚本是从shell脚本调用的。 当我从终端运行脚本或仅执行.sh文件时,它可以正常运行,但是当我计划crontab作业时,它将失败并显示下一个错误。 该错误与该问题的第一行代码有关。有人知道为什么会这样吗? 问题答案: 尝试从中启动浏览器最明显的问题是,即使您的计算机上运行了X,也未为从您的运行中的

  • 问题内容: 我在EC2实例上。因此没有GUI。 然后我这样做: 太好了,现在一切正常,对吗? 当我运行代码时: 我得到这个: 问题答案: 打开终端并运行此命令 。每次重新启动计算机时都需要运行此命令。如果一切正常,可以将其添加到启动命令中 还要确保在文件中有一行 然后,运行测试以查看问题是否得到解决。 在使用此功能之前,请所有人注意以下来自sardathrion的评论。

  • 问题内容: 我想在Amazon Lambda中运行BeautifulSoup和Selenium Webdriver,我的运行环境是python 3.6。可以跑步吗?如果是这样,如何。我的意图是使用漂亮的汤4和selenium从网页中删除数据(因为它必须删除由javascript动态生成的数据)。 问题答案: 是的,有可能。您需要将无头的Chrome二进制文件和chromedriver以及所有需要的

  • 有人能帮忙吗 下面是错误,谢谢你的及时回复。 失败:testGooglePageTitleInIEBrowser java.lang.NullPointerException在IEProjects.TesteBrowser.testGooglePageTitleInIEBrowser(TesteBrowser.java:32)在Sun.Reflect.NativeMethodAccessorImp

  • 我在Firefox中使用Firebug为没有分配ID的链接获取xpath。该链接是一个带有图像作为实际按钮的javascript链接。我希望能够单击此链接,但它不起作用。 实际的xpath是'/html/body/div[2]/div/div/div[3]/div/div/table/tbody/tr[1]/td[2]/form/table/tbody/tr[1]/td/div[1]/div/ta