Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Href在浏览器中显示不同的值,在selenium python中显示`javascript:`_Python_Selenium_Xpath_Css Selectors_Webdriverwait - Fatal编程技术网

Href在浏览器中显示不同的值,在selenium python中显示`javascript:`

Href在浏览器中显示不同的值,在selenium python中显示`javascript:`,python,selenium,xpath,css-selectors,webdriverwait,Python,Selenium,Xpath,Css Selectors,Webdriverwait,我目前正在python上工作,我应该在python中使用selenium提取所有href值数据 当我访问网站并通过开发者工具登录时,它会显示一个适当的href值,但当我使用selenium使用元素时,它会打印javascript: 有没有解决方案可以让我获得href值而不是“javascript:”呢 代码试用: driver = webdriver.Firefox(executable_path='geckodriver.exe') driver.get('website Name') a

我目前正在python上工作,我应该在python中使用selenium提取所有href值数据

当我访问网站并通过开发者工具登录时,它会显示一个适当的href值,但当我使用selenium使用
元素时,它会打印
javascript:

有没有解决方案可以让我获得href值而不是“javascript:”呢

代码试用:

driver = webdriver.Firefox(executable_path='geckodriver.exe')
driver.get('website Name')
a = driver.find_elements_by_class_name('tupData')
print(a.get_attribute('href'))
它只打印:javascript:


是否有一种解决方案可以让我获得href值而不是javascript:?

尝试查找包含href属性的锚元素,而不是父元素

elements = driver.find_elements_by_xpath("//*[@class='tupData']//a")

for element in elements:
    print(element.get_attribute('href'))

您需要到达
标记,才能检索
href
属性,以获取位于()的元素的
可见性,您可以使用以下任一解决方案:

  • 使用
    CSS\u选择器

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "a.userName.name[href*='rexdex']"))).get_attribute("href"))
    
  • 使用
    XPATH

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//a[@class='userName name' and contains(@href,'rexdex')]"))).get_attribute("href"))
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

类名“tupData”正确吗?我在截图中看到一个不同的类名。您得到的输出是什么?@Sureshmani是的,它是正确的。。。tupData是“用户名”的父项。。我也尝试了锚标记类名。。。我得到的输出是“href=javascript:”即存在多个类名为“tupData”的匹配项。我看到您使用了-find_元素。如果这是真的,那么“a”可能包含1个以上的元素。您必须循环获取href属性。您必须从标记中获取href属性。从您正在声明的内容(以及您的代码显示的内容)来看,您并不是从A标记中获得它的。发布一些周围的HTML(作为文本,而不是图像),我们可能会更好地帮助您。听起来你只需要修好你的定位器就可以得到A标签,它会工作的。。。问题是您需要的定位器是什么。我尝试使用xpath方法。。它等待了20秒,然后给了我一个错误,“NameError(“name'href'未定义”),“您能用完整的错误堆栈跟踪更新问题吗?