Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.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
如何使用Selenium和Python定位元素并提取innerText 测试用户_Python_Selenium_Xpath_Css Selectors_Webdriverwait - Fatal编程技术网

如何使用Selenium和Python定位元素并提取innerText 测试用户

如何使用Selenium和Python定位元素并提取innerText 测试用户,python,selenium,xpath,css-selectors,webdriverwait,Python,Selenium,Xpath,Css Selectors,Webdriverwait,通过查看上面的屏幕截图,请帮助我从span标记中唯一地提取内部文本测试用户您可以使用xpath找到元素: <span class="chr-UserDropdownItem-imageAndText"> <img class="chr-UserDropdownItem-image" src="/slm/profile/image/264023573852/24.sp?version=1" alt="User Profile Avatar"> <spa

通过查看上面的屏幕截图,请帮助我从span标记中唯一地提取
内部文本
测试用户

您可以使用xpath找到元素:

<span class="chr-UserDropdownItem-imageAndText">
    <img class="chr-UserDropdownItem-image" src="/slm/profile/image/264023573852/24.sp?version=1" alt="User Profile Avatar">
    <span class="smb-DropdownItem-text">
        <span>   test user   </span>
    </span>
</span>

要提取文本test user,您必须为位于()的元素的
可见性诱导WebDriverWait,并且您可以使用以下任一项:

  • 使用
    CSS\u选择器
    get\u属性()

  • 使用
    XPATH
    和文本属性:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "span.smb-DropdownItem-text>span"))).get_attribute("innerHTML"))
    
  • 注意:您必须添加以下导入:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "span[@class='smb-DropdownItem-text']>span"))).text)
    

您可以像这样使用XPath来删除空白:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
如果span标记中没有空格,请按以下方式使用XPath:

driver.find_element_by_xpath('//span/text()[normalize-space()="test user"]')
对于动态:

driver.find_element_by_xpath('//span[contains(text(), "test user")]')

您可以尝试使用下面的xpath

driver.find_element_by_xpath('//span[contains(text(), "' . $HereIsSetYourDynamicallyVaribleName . '")]')

请不要发布代码截图。你已经尝试过一些方法了吗?以什么方式不起作用?实际上是名称测试用户动态生成的,那么如何处理您能告诉我吗?实际上是名称测试用户动态生成的,那么如何处理您能告诉我吗?实际上是名称测试用户动态生成的,那么你能告诉我怎么处理吗?@DeepakBhavale这个答案基于其他元素属性,我已经演示了如何从给定的HTML中提取文本测试用户。非常感谢。我尝试过使用CSS_选择器和get_attribute()方法。您能告诉我如何为同一元素选择第二个值吗?因为有4的层次结构。@DeepakBhavale你能为你的新需求提出一个新问题吗?实际上是动态生成的测试用户的名字,那么你能告诉我如何处理吗?实际上是动态生成的测试用户的名字,那么你能告诉我如何处理吗?你应该提到这一点。全名将被更改或部分更改?现在可以使用更新的xpath进行尝试。它独立于文本
driver.find_element_by_xpath('//span[contains(text(), "' . $HereIsSetYourDynamicallyVaribleName . '")]')
//img[contains(@src, '/profile/image/')]]/following-sibling::span