使用字符串格式查找selenium元素

2024-10-16 20:40:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用selenium和python在DOM/HTMLusingcss选择器中找到一个元素

然而,我收到一个错误,语法似乎是相同的,但它输出一个错误

代码如下:

def find_element(self):
        var1, var2 = input("enter class and div (seperated by comma): ").split(',')
        var_list = [var1,var2]
        for x in var_list:
            x.strip()
        find_elem = ("{}[class*='{}']").format(var1, var2)
        try:
            if (self.driver.find_element_by_css_selector("{}[class*='{}']".format(var1,var2)).is_displayed()):
                print('Exist')
            else:
                print('does not exist')
        except Exception as e:
            raise Exception('Not looking for element')

错误如下:

Traceback (most recent call last):
  File "/home/gregory/projects/parser/Scraper1/WebGrab.py", line 55, in find_element
    if (self.driver.find_element_by_css_selector("{}[class*='{}']".format(var1,var2)).is_displayed()):
  File "/home/gregory/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 598, in find_element_by_css_selector
    return self.find_element(by=By.CSS_SELECTOR, value=css_selector)
  File "/home/gregory/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 978, in find_element
    'value': value})['value']
  File "/home/gregory/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/home/gregory/.local/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: div[class*='lga']

我使用google.com登录页作为测试用例:我要寻找的元素是google徽标。这是我从督察那里得到的元素。我输入“div”和“lga”作为div,lga

奖金,如果你能告诉我为什么带功能不工作

谢谢


Tags: inpyselfhomebyseleniumlineelement
1条回答
网友
1楼 · 发布于 2024-10-16 20:40:04

x.strip()不会改变x,所以需要x=x.strip()之类的东西。。但这在你的循环中是行不通的,因为改变x仍然不会改变var1,var2

因此,相反,只要按照以下思路做一些事情:

find_elem = ('{}[class*="{}"]').format(var1.strip(), var2.strip())

快速查看google主页,我没有看到任何div类与lga类似,尽管有一个div id=lga。所以我猜为什么找不到,因为它不在那里

相关问题 更多 >