【发布时间】:2021-04-27 17:09:32
【问题描述】:
我一直在尝试使用 python selenium 从https://aws.amazon.com/ec2/pricing/on-demand/ 中提取 ec2 实例名称。
我尝试了以下方法:
-
find_elements_by_xpath("//*[@id="root"]/div/div/div[2]/div[2]/div/awsui-table/div/div[3]/table/tbody/tr") -
tbl_rows = drv.find_elements_by_class_name("awsui-table-row")
这两种方法都返回空结果。我怎样才能解决这个问题? 下面的示例代码返回零行
url = "https://aws.amazon.com/ec2/pricing/on-demand/"
drv = webdriver.Chrome("some path")
drv.get(url)
sleep(3)
drv.maximize_window()
sleep(1)
tbl_rows = drv.find_elements_by_xpath("//tr[@class='awsui-table-row']")
pr("number of rows in table: {}".format(len(tbl_rows)))
【问题讨论】:
-
你知道控制台模式吗?例如,在 Chrome 中按 F12 更改为开发者模式并转到控制台。您现在可以将任何 xpath 表达式输入为 $x("xpath expression"),这将列出找到的元素。对于上面的 xpath,这将返回一个空列表。
-
它在控制台模式下工作。当我在控制台模式下输入 xpath 时,它正确地指向正确的 web 元素。但是当我在代码中使用相同的 xpath 时,它返回空值
-
好吧,我很难相信这一点。当然,上面的 xpath 在 Chromium 控制台中不起作用,因为你已经嵌套了 "。即使修复了这个,结果对我来说也是空的,使用你提到的网站。
-
您可以尝试以下 xpath 一次吗:"//tr[@class='awsui-table-row']"
-
@user2622678 你在找什么元素?你说的ec2是什么意思?我看到您在问题中提出的两个定位器都匹配 20 个元素
标签: python amazon-web-services selenium selenium-webdriver amazon-ec2