创建了一个selenium浏览器并检索了一个网页,这很好用:
...
if selenium_browser.find_element(By.ID, 'id_name'):
print "found"
...
给出这样的元组:
tup = ('ID', 'id_name')
我希望能够找到这样的元素:
if selenium_browser.find_element(By.tup[0], tup[1]):
但我收到此错误
AttributeError: type object 'By' has no attribute 'tup'
如何在不写的情况下完成此操作:
if tup[0] == 'ID':
selenium_browser.find_element(By.ID, tup[1])
...
elif tup[0] == 'CLASS_NAME':
selenium_browser.find_element(By.CLASS_NAME, tup[1])
...
elif tup[0] == 'LINK_TEXT':
etc etc
http://selenium-python.readthedocs.io/api.html?highlight=#module-selenium.webdriver.common.by
答案 0 :(得分:3)
如果您想直接向find_element
提供元组,请在前面添加*
:
locator = (By.ID, 'id')
element = driver.find_element(*locator)
或者使用以字符串形式提供的方法:
locator = ('ID', 'id_name')
driver.find_element(getattr(By, locator[0]), locator[1])
答案 1 :(得分:1)
您的语法已关闭。
文档说这应该像这样使用:find_element(by='id', value=None)
所以而不是
if selenium_browser.find_element(By.tup[0], tup[1]):
你应该做
if selenium_browser.find_element(tup[0], tup[1]):
#or
if selenium_browser.find_element(by=tup[0], value=tup[1]):
您可能需要或可能不需要小写by
元素IE tup[0].lower()