在python中使用selenium定位web元素

时间:2016-02-28 18:31:19

标签: python selenium xpath

我正在尝试使用selenium在网页中找到一个元素。当我在web元素上“右键单击”并检查时,我可以在控制台中找到html代码。但是,当我从控制台复制相同元素的xpath并尝试在firepath中执行它时,它会显示“No matching nodes”。为什么会这样,我该如何解决这个问题?

这是元素的HTML。

<input id="mobile" type="text" onchange="javascript:dispLocMob(this);
"onkeydown="javascript:dispLocMob(this);
"onkeyup="javascript:dispLocMob(this);" value="" maxlength=
"10" placeholder="Mobile Number" name="mobile">

这就是我在做的事情:

receiverMobileElement = browser.find_element_by_xpath('//*[@id="mobile"]')

请帮忙。

2 个答案:

答案 0 :(得分:0)

为什么在 unique xpath找到元素时使用id

from selenium import webdriver

browser = webdriver.Firefox()
browser.get('http://example.com')

target_element = browser.find_element_by_id('mobile')

答案 1 :(得分:0)

我总是说螺丝萤火虫,使用Chrome控制台..

从它的外观来看,获得这个特定元素的最佳方法是以下两个选项之一(假设'id = mobile'是唯一的)..

By.cssSelector("#mobile");
By.xpath("//input[@id = 'mobile']");

使用chrome控制台 - &gt;

  1. 启动Chrome
  2. 右键单击并检查您的元素。
  3. 你应该看到html代码和控制台出现在它下面。 (如果看不到控制台,请单击三个垂直点并选择“显示控制台”
  4. 现在,从这里你可以做一些很棒的东西!您可以搜索要识别的元素,并查看是否可以找到它们。例如,查看By.cssSelector(“#mobile”);将工作键入此
  5. document.querySelectorAll( “#移动”)

    对于xpath,请输入

    $ xBy.xpath(“// input [@id ='mobile']”);

    只是一个建议......如果您的代码有效,请不要担心firebug,并在chrome中认真尝试这种方式!!