GVKun编程网logo

通过execute_script创建元素时无法找到find_element_by_id

9

本文将介绍通过execute_script创建元素时无法找到find_element_by_id的详细情况,。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于a

本文将介绍通过execute_script创建元素时无法找到find_element_by_id的详细情况,。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于android – Eclipse无法找到R.layout.simple_list_item_1、Appium app自动化测试经验分享-find_element_by_android_uiautomator ()【二】、document.all与getElementById、getElementsByName、getElementsByTagName用法区别-getElementById_javascript技巧、find_element_by_android_uiautomator查找元素超时的知识。

本文目录一览:

通过execute_script创建元素时无法找到find_element_by_id

通过execute_script创建元素时无法找到find_element_by_id

我目前正在使用python 3.6.5,selenium版本3.14.0

如果我创建了如下所示的网络元素:

driver.execute_script("""var body = document.getElementsByTagName(''body'').item(0);var div = document.createElement(''div'');div.setAttribute(''id'', ''ZZZ'');body.appendChild(div);""")

我无法使用以下内容:

    wait.until(        expected_conditions.presence_of_element_located(            (By.ID, ''ZZZ'')        )    )

我已经仔细检查过是否成功创建了该元素,但是使用selenium包提供的API(例如find_element_by_id和上面的脚本)无法找到该元素。

问题:在execute_script之后注入新元素之后,我还需要做其他事情吗?还是目前,这不可能吗?

我可以通过以下方式获取元素:

new_element = driver.execute_script(''return document.getElementById("ZZZ");'')

但是,如果我不能使用selenium包提供的默认API(例如find_element_by_id),这对我来说将很困难

答案1

小编典典

下面的代码对我有用:

driver.get(''http://www.google.com'')elem = driver.find_element_by_name("q")driver.execute_script("var body = document.getElementsByTagName(''body'').item(0);var div = document.createElement(''div'');div.setAttribute(''id'', ''ZZZ'');body.appendChild(div);")element = WebDriverWait(driver, 10).until(    EC.presence_of_element_located((By.ID, "ZZZ")))driver.quit()

android – Eclipse无法找到R.layout.simple_list_item_1

android – Eclipse无法找到R.layout.simple_list_item_1

我正在使用 Eclipse ADT构建我的第一个 Android项目.

我尝试填充LIstView,为此我创建了一个ArrayAdaptor.

现在,我找不到R.layout.simple_list_item_1,它应该是android提供的?我的项目中包含“Android 4.3”库,我可以在android.jar / res / layout中看到“simple_list_item_1.xml”.

有什么指向这里可能缺少的东西?

解决方法

请记住,大多数情况下,您使用为自己的项目生成的R类,如果您之前在代码中使用了某些R属性并使用自动导入,则代码中的“R”将引用项目的R类.

而是使用android.R.layout.simple_list_item_1专门引用Android的R类,你应该没问题.

Appium app自动化测试经验分享-find_element_by_android_uiautomator ()【二】

Appium app自动化测试经验分享-find_element_by_android_uiautomator ()【二】

本文为博主原创,未经许可严禁转载。
本文链接:https://blog.csdn.net/zyooooxie/article/details/113868447

之前分享过 find_element_by_android_uiautomator () 【一】,最近做了些新学习,做个新分享。

个人博客:https://blog.csdn.net/zyooooxie

用法

在这里插入图片描述

find_element_by_android_uiautomator(uia_string)

作用:通过底层Android UiAutomator自动化测试框架定位控件。
参数:参数是UiAutomator的 UiSelector对象来定位。

官方文档 UiSelector

总结如下:

resource-id属性:
resourceId\resourceIdMatches

text属性:
text\textContains\textStartsWith\textMatches

className属性:
className\classNameMatches

description属性:
description\descriptionContains\descriptionMatches\descriptionStartsWith

fromParent:兄弟定位

Adds a child UiSelector criteria to this selector which is used to start search from the parent widget. Use this selector to narrow the search scope to sibling widgets as well all child widgets under a parent.

childSelector:父子定位

Adds a child UiSelector criteria to this selector. Use this selector to narrow the search scope to child widgets under a specific parent widget.

package属性:
packageName\packageNameMatches

index:序列【其父元素的第几个节点】

Set the search criteria to match the widget by its node index in the layout hierarchy. The index value must be 0 or greater. Using the index can be unreliable and should only be used as a last resort for matching. Instead, consider using the instance(int) method.

instance:实例【所有结果 里面的第几个元素】

Set the search criteria to match the widget by its instance number. The instance value must be 0 or greater, where the first instance is 0. For example, to simulate a user click on the third image that is enabled in a UI screen, you Could specify a a search criteria where the instance is 2, the className(String) matches the image widget class, and enabled(boolean) is true. The code would look like this: new UiSelector().className(“android.widget.ImageView”) .enabled(true).instance(2);

多说一句:正则,xxxMatches,要做到所有内容 全匹配;【在UISlector使用所有的正则表达式相关的方法中都有效

代码

还是某Q极速版来举例;

操作流程:打开app-我-(右上角的)二维码-下方页面;

在这里插入图片描述

ANDROID_UIAUTOMATOR = ‘-android uiautomator’

File:page_wo.py


class PageWo(BaseMethod):
    # 我
    tab_wo = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().resourceId("com.csdn.zyooooxie:id/tab4")')

    # 右上角的二维码
    scan = (MobileBy.ANDROID_UIAUTOMATOR, 'resourceId("{}")'.format('com.csdn.zyooooxie:id/ivTitleScan'))

    # 我-断言的元素
    zyooooxie = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("zyooooxie")')

    # 二维码-断言的元素
    payment_text = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("付款")')

    # 我的二维码
    # text          我的二维码
    # resource-id   com.csdn.zyooooxie:id/ivTitleBtnLeft
    # class         android.widget.TextView【排序为0 故可用】
    # content-desc  向上导航
    
    # 父子节点  先定位父元素,通过父元素找儿子
    # 兄弟节点  通过兄弟元素,找到同一父级元素下的子元素

    # 上面是推荐的;下面是不太推荐的

    # package       com.csdn.zyooooxie 【包名感觉是 不单用,要组合用】
    # instance      int 【the first instance is 0】、【index_instance 推荐使用instance方法】
    # index         int 【be used as a last resort for matching】

    # text\textContains\textStartsWith\textMatches
    left_button_text0 = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("我的二维码")')
    left_button_text1 = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().textContains("我的二")')
    left_button_text2 = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().textStartsWith("我的二维")')
    left_button_text3 = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().textMatches(".的.+码$")')
    left_button_text4 = (MobileBy.ANDROID_UIAUTOMATOR, 'textMatches(".的.+码$")')

    # resourceId\resourceIdMatches
    left_button_id0 = (MobileBy.ANDROID_UIAUTOMATOR, 'resourceId("com.csdn.zyooooxie:id/ivTitleBtnLeft")')
    left_button_id1 = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().resourceId("com.csdn.zyooooxie:id/ivTitleBtnLeft")')
    left_button_id2 = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().resourceIdMatches("^com.+zyooooxie:id/ivTitleBtnLeft$")')

    # className\classNameMatches
    left_button_class0 = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().className("android.widget.TextView")')
    left_button_class3 = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().classNameMatches("^android.+TextView$")')
    left_button_class5 = (MobileBy.ANDROID_UIAUTOMATOR, 'className("android.widget.TextView")')

    # description\descriptionContains\descriptionMatches\descriptionStartsWith
    left_button_desc0 = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().description("向上导航")')
    left_button_desc1 = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().descriptionContains("上导航")')
    left_button_desc2 = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().descriptionMatches("^向.+航$")')
    left_button_desc3 = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().descriptionStartsWith("向上导")')
    left_button_desc5 = (MobileBy.ANDROID_UIAUTOMATOR, 'description("向上导航")')

    # fromParent:兄弟定位
    brother0 = ('-android uiautomator', 'resourceId("com.csdn.zyooooxie:id/qrcode_scanner_imageview").fromParent(resourceId("com.csdn.zyooooxie:id/qrcode_scanner_text"))')
    brother1 = ('-android uiautomator', 'new UiSelector().resourceId("com.csdn.zyooooxie:id/qrcode_group_charge_layout").fromParent(new UiSelector().resourceId("com.csdn.zyooooxie:id/qrcode_group_payment_layout"))')

    # childSelector:父子定位
    child0 = (MobileBy.ANDROID_UIAUTOMATOR, 'resourceId("com.csdn.zyooooxie:id/rlCommenTitle").childSelector(className("android.widget.TextView"))')
    child1 = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().resourceId("com.csdn.zyooooxie:id/group_qrcode_charge_paymen_layout").childSelector(description("扫一扫"))')

    # instance 和 index 都是从0开始计数,

    # index: 后续定位方式是其本身 + index是其父元素的第几个节点
    index0 = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().index(1).resourceId("com.csdn.zyooooxie:id/qrcode_group_charge_layout")')
    index1 = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().index(3).resourceId("com.csdn.zyooooxie:id/qrcode_group_payment_layout")')
    index2 = (MobileBy.ANDROID_UIAUTOMATOR, 'index(5).resourceId("com.csdn.zyooooxie:id/qrcode_scanner_layout")')
    index3 = (MobileBy.ANDROID_UIAUTOMATOR, 'index(1).text("扫一扫")')
    index4 = (MobileBy.ANDROID_UIAUTOMATOR, 'index(1).description("zyooooxie,扫一扫二维码,加我QQ。")')

    # instance:匹配的所有结果 里面的第几个元素
    instance0 = ('-android uiautomator', 'new UiSelector().instance(0).className("android.widget.TextView")')
    instance1 = ('-android uiautomator', 'new UiSelector().instance(1).classNameMatches(".+TextView$")')
    instance2 = ('-android uiautomator', 'instance(2).className("android.widget.TextView")')
    instance3 = ('-android uiautomator', 'instance(3).classNameMatches(".+TextView$")')

    instance10 = ('-android uiautomator', 'instance(2).className("android.widget.ImageView")')
    instance11 = ('-android uiautomator', 'new UiSelector().instance(0).className("android.widget.ImageView")')
    instance12 = ('-android uiautomator', 'new UiSelector().instance(3).classNameMatches("^android.+geView$")')
    instance13 = ('-android uiautomator', 'instance(1).classNameMatches("^android.+geView$")')

    # packageName\packageNameMatches
    left_button_package0 = ('-android uiautomator', 'new UiSelector().packageName("com.csdn.zyooooxie").text("我的二维码")')
    left_button_package1 = ('-android uiautomator', 'packageName("com.csdn.zyooooxie").resourceId("com.csdn.zyooooxie:id/ivTitleBtnLeft")')
    left_button_package2 = ('-android uiautomator', 'new UiSelector().packageName("com.csdn.zyooooxie").description("向上导航")')
    left_button_package10 = ('-android uiautomator', 'new UiSelector().packageNameMatches("com.+zyooooxie").textContains("的二维")')
    left_button_package11 = ('-android uiautomator', 'packageNameMatches("^com.+zyooooxie").className("android.widget.TextView")')
    left_button_package12 = ('-android uiautomator', 'new UiSelector().packageNameMatches("com.+zyooooxie$").descriptionStartsWith("向上")')
    fail_package20 = ('-android uiautomator', 'new UiSelector().packageName("000.11111111.222222").descriptionStartsWith("向上")')
    fail_package21 = ('-android uiautomator', 'new UiSelector().packageNameMatches("111.+22222").textContains("的二维")')

    def QR_code(self, driver):
        self.element_click(driver, *self.tab_wo)
        self.element_click(driver, *self.scan)


pytest.ini 文件:

在这里插入图片描述

@File:test_wo.py

class TestWo(PageWo):

    @pytest.mark.mark_text
    def test_text_0(self, driver):
        self.QR_code(driver)
        print(self.left_button_text0)
        self.element_click(driver, *self.left_button_text0)

        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_text
    def test_text_1(self, driver):
        self.QR_code(driver)
        print(self.left_button_text1)
        self.element_click(driver, *self.left_button_text1)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_text
    def test_text_2(self, driver):
        self.QR_code(driver)
        print(self.left_button_text2)
        self.element_click(driver, *self.left_button_text2)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_text
    def test_text_3(self, driver):
        self.QR_code(driver)
        print(self.left_button_text3)
        self.element_click(driver, *self.left_button_text3)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_text
    def test_text_4(self, driver):
        self.QR_code(driver)
        print(self.left_button_text4)
        self.element_click(driver, *self.left_button_text4)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_id
    def test_id_0(self, driver):
        self.QR_code(driver)
        print(self.left_button_id0)
        self.element_click(driver, *self.left_button_id0)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_id
    def test_id_1(self, driver):
        self.QR_code(driver)
        print(self.left_button_id1)
        self.element_click(driver, *self.left_button_id1)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_id
    def test_id_2(self, driver):
        self.QR_code(driver)
        print(self.left_button_id2)
        self.element_click(driver, *self.left_button_id2)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_class
    def test_class_0(self, driver):
        self.QR_code(driver)
        print(self.left_button_class0)
        self.element_click(driver, *self.left_button_class0)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_class
    def test_class_3(self, driver):
        self.QR_code(driver)
        print(self.left_button_class3)
        self.element_click(driver, *self.left_button_class3)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_class
    def test_class_5(self, driver):
        self.QR_code(driver)
        print(self.left_button_class5)
        self.element_click(driver, *self.left_button_class5)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_desc
    def test_desc_0(self, driver):
        self.QR_code(driver)
        print(self.left_button_desc0)
        self.element_click(driver, *self.left_button_desc0)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_desc
    def test_desc_1(self, driver):
        self.QR_code(driver)
        print(self.left_button_desc1)
        self.element_click(driver, *self.left_button_desc1)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_desc
    def test_desc_2(self, driver):
        self.QR_code(driver)
        print(self.left_button_desc2)
        self.element_click(driver, *self.left_button_desc2)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_desc
    def test_desc_3(self, driver):
        self.QR_code(driver)
        print(self.left_button_desc3)
        self.element_click(driver, *self.left_button_desc3)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_desc
    def test_desc_5(self, driver):
        self.QR_code(driver)
        print(self.left_button_desc5)
        self.element_click(driver, *self.left_button_desc5)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_index_instance
    def test_index_0(self, driver):
        self.QR_code(driver)
        self.assert_FindElement(driver, *self.payment_text, the_time=5)
        print(self.index0)

        attr_name = self.driver_find_element_and_wait(driver, *self.index0).get_attribute("name")
        print(attr_name)

        name = '收款'
        assert attr_name == name

    @pytest.mark.mark_index_instance
    def test_index_1(self, driver):
        self.QR_code(driver)
        self.assert_FindElement(driver, *self.payment_text, the_time=5)

        print(self.index1)
        attr_name = self.driver_find_element_and_wait(driver, *self.index1).get_attribute("name")
        print(attr_name)

        name = '付款'
        assert attr_name == name

    @pytest.mark.mark_index_instance
    def test_index_2(self, driver):
        self.QR_code(driver)
        self.assert_FindElement(driver, *self.payment_text, the_time=5)

        print(self.index2)
        attr_name = self.driver_find_element_and_wait(driver, *self.index2).get_attribute("name")
        print(attr_name)

        name = '扫一扫'
        assert attr_name == name

    @pytest.mark.mark_index_instance
    def test_index_3(self, driver):
        self.QR_code(driver)
        self.assert_FindElement(driver, *self.payment_text, the_time=5)

        print(self.index3)
        attr_id = self.driver_find_element_and_wait(driver, *self.index3).get_attribute("resourceId")
        print(attr_id)

        assert_id = 'com.csdn.zyooooxie:id/qrcode_scanner_text'
        assert assert_id == attr_id

    @pytest.mark.mark_index_instance
    def test_index_4(self, driver):
        self.QR_code(driver)
        self.assert_FindElement(driver, *self.payment_text, the_time=5)

        print(self.index4)
        attr_class = self.driver_find_element_and_wait(driver, *self.index4).get_attribute("className")
        print(attr_class)
        assert 'android.widget.ImageView' == attr_class

    @pytest.mark.mark_index_instance
    def test_instance_0(self, driver):
        self.QR_code(driver)
        self.assert_FindElement(driver, *self.payment_text, the_time=5)

        print(self.instance0)
        attr_text = self.driver_find_element_and_wait(driver, *self.instance0).get_attribute("text")
        print(attr_text)

        text = '我的二维码'
        assert attr_text == text

    @pytest.mark.mark_index_instance
    def test_instance_1(self, driver):
        self.QR_code(driver)
        self.assert_FindElement(driver, *self.payment_text, the_time=5)

        print(self.instance1)
        attr_text = self.driver_find_element_and_wait(driver, *self.instance1).get_attribute("text")
        print(attr_text)

        text = '收款'
        assert attr_text == text

    @pytest.mark.mark_index_instance
    def test_instance_2(self, driver):
        self.QR_code(driver)
        self.assert_FindElement(driver, *self.payment_text, the_time=5)

        print(self.instance2)
        attr_text = self.driver_find_element_and_wait(driver, *self.instance2).get_attribute("text")
        print(attr_text)

        text = '付款'
        assert attr_text == text

    @pytest.mark.mark_index_instance
    def test_instance_3(self, driver):
        self.QR_code(driver)
        self.assert_FindElement(driver, *self.payment_text, the_time=5)

        print(self.instance3)
        attr_text = self.driver_find_element_and_wait(driver, *self.instance3).get_attribute("text")
        print(attr_text)

        text = '扫一扫'
        assert attr_text == text

    @pytest.mark.mark_index_instance
    def test_instance_10(self, driver):
        self.QR_code(driver)
        self.assert_FindElement(driver, *self.payment_text, the_time=5)

        print(self.instance10)
        attr_id = self.driver_find_element_and_wait(driver, *self.instance10).get_attribute("resourceId")
        print(attr_id)

        res_id = 'com.csdn.zyooooxie:id/qrcode_group_payment_imageview'
        assert attr_id == res_id

    @pytest.mark.mark_index_instance
    def test_instance_11(self, driver):
        self.QR_code(driver)
        self.assert_FindElement(driver, *self.payment_text, the_time=5)

        print(self.instance11)
        attr_id = self.driver_find_element_and_wait(driver, *self.instance11).get_attribute("resourceId")
        print(attr_id)

        res_id = 'com.csdn.zyooooxie:id/qrcode_card_body'
        assert attr_id == res_id

    @pytest.mark.mark_index_instance
    def test_instance_12(self, driver):
        self.QR_code(driver)
        self.assert_FindElement(driver, *self.payment_text, the_time=5)

        print(self.instance12)
        attr_id = self.driver_find_element_and_wait(driver, *self.instance12).get_attribute("resourceId")
        print(attr_id)

        res_id = 'com.csdn.zyooooxie:id/qrcode_scanner_imageview'
        assert attr_id == res_id

    @pytest.mark.mark_index_instance
    def test_instance_13(self, driver):
        self.QR_code(driver)
        self.assert_FindElement(driver, *self.payment_text, the_time=5)

        print(self.instance13)
        attr_id = self.driver_find_element_and_wait(driver, *self.instance13).get_attribute("resourceId")
        print(attr_id)

        res_id = 'com.csdn.zyooooxie:id/qrcode_group_charge_imageview'
        assert attr_id == res_id

    @pytest.mark.mark_package
    def test_package_0(self, driver):
        self.QR_code(driver)
        print(self.left_button_package0)
        self.element_click(driver, *self.left_button_package0)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_package
    def test_package_1(self, driver):
        self.QR_code(driver)
        print(self.left_button_package1)
        self.element_click(driver, *self.left_button_package1)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_package
    def test_package_2(self, driver):
        self.QR_code(driver)
        print(self.left_button_package2)
        self.element_click(driver, *self.left_button_package2)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_package
    def test_package_3(self, driver):
        self.QR_code(driver)
        print(self.left_button_package10)
        self.element_click(driver, *self.left_button_package10)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_package
    def test_package_4(self, driver):
        self.QR_code(driver)
        print(self.left_button_package11)
        self.element_click(driver, *self.left_button_package11)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_package
    def test_package_5(self, driver):
        self.QR_code(driver)
        print(self.left_button_package12)
        self.element_click(driver, *self.left_button_package12)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_package
    def test_package_6(self, driver):
        self.QR_code(driver)
        print(self.fail_package20)
        self.element_click(driver, *self.fail_package20)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_package
    def test_package_7(self, driver):
        self.QR_code(driver)
        print(self.fail_package21)
        self.element_click(driver, *self.fail_package21)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_child_parent
    def test_parent0(self, driver):
        self.QR_code(driver)
        print(self.brother0)
        # text有值、content-desc无值
        print(self.driver_find_element_and_wait(driver, *self.brother0).get_attribute("text"))

        self.assert_FindElement(driver, *self.payment_text, the_time=5)

    @pytest.mark.mark_child_parent
    def test_parent1(self, driver):
        self.QR_code(driver)
        print(self.brother1)
        # content-desc有值、text无值
        print(self.driver_find_element_and_wait(driver, *self.brother1).get_attribute("name"))

        self.assert_FindElement(driver, *self.payment_text, the_time=5)

    @pytest.mark.mark_child_parent
    def test_child0(self, driver):
        self.QR_code(driver)
        print(self.child0)
        self.element_click(driver, *self.child0)
        self.assert_FindElement(driver, *self.zyooooxie, the_time=5)

    @pytest.mark.mark_child_parent
    def test_child1(self, driver):
        self.QR_code(driver)
        print(self.child1)
        self.assert_FindElement(driver, *self.payment_text, the_time=5)

        self.element_click(driver, *self.child1)

if __name__ == '__main__':
    # pytest.main(['-s', '-v', 'test_wo.py', '-m', 'mark_id or mark_text'])
    # pytest.main(['-s', '-v', 'test_wo.py', '-m', 'mark_index_instance'])
    # pytest.main(['-s', '-v', 'test_wo.py'])
    pytest.main(['-v', 'test_wo.py', '--reruns', '2', '--reruns-delay', '5'])


执行结果

在这里插入图片描述

在这里插入图片描述

交流技术 欢迎+QQ 153132336 zy
个人博客 https://blog.csdn.net/zyooooxie

document.all与getElementById、getElementsByName、getElementsByTagName用法区别-getElementById_javascript技巧

document.all与getElementById、getElementsByName、getElementsByTagName用法区别-getElementById_javascript技巧

不过,如果您需要查找文档中的一个特定的元素,最有效的方法是 getElementById()。
不过要注意的是使用getElementById时对不同的浏览器执行的结果可能是不同的,以下有相关说明

复制代码 代码如下:

text1:



text2:





我在IE中测试了上面的代码,在第一个文本框中输入1,在第二个文本框中输入2,然后点下面的两个按钮,猜一下结果是什么?
我本意是按钮1返回第一个文本框的值,按钮2返回个文本框的值。
结果是两个按钮都返回了第一个文本框的值。
说明ie执行document.getElementById(elementName)的时候,返回的是第一个name或者id等于elementName的对象,并不是按照ID来查找的。
在fireFox中不存在这样的问题,fireFox执行document.getElementById(elementName)的时候只查找id等于elementName的对象,如果不存在则返回null。
可能IE是考虑的兼容性的问题才这么做的。

以下是我测试所用的代码:

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

这个时候我在两个text中输入的值分别为:eee, www
IE中测试结果为:eee , eee
再看当我把中的id去除时,也即上面代码使用注释中的内容时
我同样输入eee, www
IE中测试结果为:www ,eee
仔细分析上面两个测试的结果:得出结论是:每执行getElementById一次,会将web页面中的所有表单按顺序遍历一次,同时查找id,name两个值,如果存在所要找的id则不再继续查找,如果没有相应的id与之对应则看name值是否与之对应,如果有相应的name与之对应,则不再继续查找。也就是说:
ie执行document.getElementById(elementName)的时候,返回的是第一个name或者id等于elementName的对象,并不是仅按照ID来查找的。
而同样的两个测试在firefox下第一个结果为eee,www,而第二个结果因为没有找到id="ccc"所以返回null
对于这个结果还可参见
http://www.jb51.net/article/16852.htm
他还对getElementById与getElementByName进行了分析,值得一看。

find_element_by_android_uiautomator查找元素超时

find_element_by_android_uiautomator查找元素超时

困惑了两天的问题,原来是单引号和双引号问题,欠缺考虑到Java的格式

Traceback (most recent call last):
  File "D:/Python/PycharmProjects/ketang/test_s/test4.py", line 34, in <module>
    webdriverwait(driver, 20).until(EC.visibility_of_element_located((MobileBy.ANDROID_UIAUTOMATOR, loc)))
  File "D:\Python\python37\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: 

原代码:

更改后: 

loc = 'new UiSelector().text("已有账号?立即登录")'
webdriverwait(driver, 20).until(EC.visibility_of_element_located((MobileBy.ANDROID_UIAUTOMATOR, loc)))
driver.find_element_by_android_uiautomator(loc).click()

海染蓝 发布了6 篇原创文章 · 获赞 0 · 访问量 124 私信 关注

关于通过execute_script创建元素时无法找到find_element_by_id的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于android – Eclipse无法找到R.layout.simple_list_item_1、Appium app自动化测试经验分享-find_element_by_android_uiautomator ()【二】、document.all与getElementById、getElementsByName、getElementsByTagName用法区别-getElementById_javascript技巧、find_element_by_android_uiautomator查找元素超时等相关内容,可以在本站寻找。

本文标签:

上一篇如何在RemoteWebDriver中使用Selenium TouchActions(seleniumwebdriver介绍)

下一篇如何使用Selenium WebDriver单击列表中的特定元素?(selenium单选按钮)